I get acces violation using ODAC TOraTable.
struct InfoForCombo
{
AnsiString ValueHodn;
AnsiString ListHodn;
};
....
void __fastcall TFilterCombo::NastavTTable(TDataSet *poiTTable)
{
...
PoleInfoCombo = new InfoForCombo[iRozsah];
while (!pTTable->Eof)
{
PoleInfoCombo.ValueHodn = pFieldVal->AsString; AsString;
Items->Add(PoleInfoCombo.ListHodn);
pTTable->Next();
i += 1;
}
}
Function is called with pointer to TOraTable. It has worked perfectly with BDE TTable for years. Error ocure only sometime.
CallStack:
:7c81eb33 kernel32.RaiseException + 0x52
:51f06a48 rtl100.@System@@BeforeDestruction$qqrp14System@TObjectzc + 0x48
:7c90378b ntdll.RtlConvertUlongToLargeInteger + 0x46
:7c90eafa ntdll.KiUserExceptionDispatcher + 0xe
:003A5E5D TFilterCombo::NastavTTable(this=:02AF3EA0, poiTTable=????)
In Assembly:
003A5E58 E843260000 call System::AnsiString::operator =(const System::AnsiString &)
003A5E5D FF4DD0 dec dword ptr [ebp-$30]
Using ODAC Trial Version, BDS 2006 Architekt Update 1, WinXP SP2.
Acces Violation
-
- Posts: 28
- Joined: Fri 28 Apr 2006 08:59
- Location: Czech Republic
- Contact:
-
- Posts: 28
- Joined: Fri 28 Apr 2006 08:59
- Location: Czech Republic
- Contact:
I forgott copy part of code
void __fastcall TFilterCombo::NastavTTable(TDataSet *poiTTable)
{
...
PoleInfoCombo = new InfoForCombo[iRozsah];
TField *const pFieldVal = poiTTable->FieldByName(pValField);
TField *const pFieldList = poiTTable->FieldByName(pListField);
while (!pTTable->Eof)
{
PoleInfoCombo.ValueHodn = pFieldVal->AsString; AsString;
Items->Add(PoleInfoCombo.ListHodn);
pTTable->Next();
i += 1;
}
}
{
...
PoleInfoCombo = new InfoForCombo[iRozsah];
TField *const pFieldVal = poiTTable->FieldByName(pValField);
TField *const pFieldList = poiTTable->FieldByName(pListField);
while (!pTTable->Eof)
{
PoleInfoCombo.ValueHodn = pFieldVal->AsString; AsString;
Items->Add(PoleInfoCombo.ListHodn);
pTTable->Next();
i += 1;
}
}
-
- Devart Team
- Posts: 925
- Joined: Thu 17 Nov 2005 10:53
-
- Posts: 28
- Joined: Fri 28 Apr 2006 08:59
- Location: Czech Republic
- Contact:
Problem solved
Problem wasn't in ODAC component. Alocation of PoleInfoCombo = new InfoForCombo[iRozsah]; was based on RecordCount. But RecordCount returned only 25 because FaetchAll was false.