2014-12-05 64 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

相关问题