有几天我一直试图解决这个错误,只是在运行我的项目时我收到了stackoverflow错误。当我创建一个有四个查找字段的TClientDataSet时,错误就开始了。在调试模式下,我没有得到任何信息(或我理解的东西),当在设计模式下激活Clientdataset时,Delphi XE6 IDE只会崩溃并退出。
我使用MySQL。
以下是.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 :(得分:0)
我建议以下内容缩小此错误。在Windows.pas中的CompareString函数中设置断点。编辑断点的属性(高级)并选择“Log Call Stack”,清除“Break”复选框。
这应该在调用CompareString时将调用堆栈打印到Messages窗格。当你崩溃时仔细看看打印的callstacks,看看它是否比“Call Stack”窗格中的更完整。