2014-12-05 44 views
0

幾天來,我一直試圖解決這個錯誤,只是在運行我的項目時,我收到了一個stackoverflow錯誤。當我創建一個具有四個查找字段的TClientDataSet時,錯誤就開始了。在調試模式下,我沒有收到任何信息(或者我理解的),當在設計模式下激活Clientdataset時,Delphi XE6 IDE會崩潰並退出。當clientdataset打開時在IDE中的Stackoverflow

我使用MySQL。

enter image description here

下面是來自.DFM文件的TClientdataSet定義:

object cdstblocal: TClientDataSet 
    Aggregates = <> 
    Params = <> 
    ProviderName = 'dsptblocal' 
    Left = 1048 
    Top = 192 
    object cdstblocallocId: TIntegerField 
    FieldName = 'locId' 
    ProviderFlags = [pfInUpdate, pfInWhere, pfInKey] 
    end 
    object cdstblocallocEst_Id: TIntegerField 
    FieldName = 'locEst_Id' 
    end 
    object cdstblocallocTip_Id: TIntegerField 
    FieldName = 'locTip_Id' 
    end 
    object cdstblocallocBH_Id: TIntegerField 
    FieldName = 'locBH_Id' 
    end 
    object cdstblocallocRio_Id: TIntegerField 
    FieldName = 'locRio_Id' 
    end 
    object cdstblocallocDat_Id: TIntegerField 
    FieldName = 'locDat_Id' 
    Required = True 
    end 
    object cdstblocallocNome: TStringField 
    FieldName = 'locNome' 
    Size = 45 
    end 
    object cdstblocallocSigla: TStringField 
    FieldName = 'locSigla' 
    Size = 8 
    end 
    object cdstblocallocLat: TFloatField 
    FieldName = 'locLat' 
    end 
    object cdstblocallocLong: TFloatField 
    FieldName = 'locLong' 
    end 
    object cdstblocallocAlt: TFloatField 
    FieldName = 'locAlt' 
    end 
    object cdstblocallocComent: TStringField 
    FieldName = 'locComent' 
    Size = 100 
    end 
    object cdstblocallocData: TSQLTimeStampField 
    FieldName = 'locData' 
    end 
    object cdstblocallistbh: TStringField 
    FieldKind = fkLookup 
    FieldName = 'listbh' 
    LookupDataSet = cdstbbh 
    LookupKeyFields = 'bhId' 
    LookupResultField = 'bhNome' 
    KeyFields = 'locBH_Id' 
    Lookup = True 
    end 
    object cdstblocallistrio: TStringField 
    FieldKind = fkLookup 
    FieldName = 'listrio' 
    LookupDataSet = cdstbrio 
    LookupKeyFields = 'rioId' 
    LookupResultField = 'rioNome' 
    KeyFields = 'locRio_Id' 
    Lookup = True 
    end 
    object cdstblocallisttip: TStringField 
    FieldKind = fkLookup 
    FieldName = 'listtip' 
    LookupDataSet = cdstblocal_tipo 
    LookupKeyFields = 'locTipId' 
    LookupResultField = 'locTipNome' 
    KeyFields = 'locId' 
    Lookup = True 
    end 
    object cdstblocallistest: TStringField 
    FieldKind = fkLookup 
    FieldName = 'listest' 
    LookupDataSet = cdstblocal_estado 
    LookupKeyFields = 'locEstId' 
    LookupResultField = 'locEstNome' 
    KeyFields = 'locEst_Id' 
    Lookup = True 
    end 
end 
+0

謝謝@JerryDodge,這個問題確實缺少一些信息。我只是把一個clientdataset放在一個datamodule中,創建查找字段並點擊活動的delphi崩潰,而沒有其他代碼寫我。所以問題可能出現在我的數據庫中。 – 2014-12-05 15:45:20

+0

@JerryDodge說什麼。但是,由於您在設計模式中聲稱您的項目會使IDE崩潰,因此它不能成爲您的代碼(當然,除非您使用任何自寫組件)。你可以做的一件事是將你的表單(或數據模塊)剝離到最低限度,然後將DFM的文本版本添加到你的q - 這樣我們可能有機會重現你的問題。是否有任何查找字段共享相同的數據集以進行數據查找? – MartynA 2014-12-05 15:48:27

+2

此外,請檢查您是否設法將您的數據集連接到「循環中」。如果環路IIRC中只有2個數據集,IDE將檢測到並阻止您,但我不確定關於多於2個。 – MartynA 2014-12-05 15:55:29

回答

0

我建議爲縮小這個錯誤以下。在Windows.pas的函數CompareString中設置一個斷點。編輯斷點的屬性(高級)並選擇「記錄調用堆棧」,清除「斷點」複選框。

這應該在調用CompareString時將調用堆棧打印到Messages窗格。當你崩潰時仔細看看打印的調用堆棧,看看它是否比「調用堆棧」窗格中的更完整。

+0

是一個沒有前面的關鍵的查找字段。 – 2015-01-30 13:20:23

相關問題