у меня аналогичная проблема,имеется проект под Delphi 2009, ранее всё работало, однако переустановил ОС, и поставил новый Delphi 2009. В коде ничего не менялось с тех пор, как в последний раз работало. Теперь при работе выскакивает сообщение
raised too many consecutive exceptions...access violation
Обнаружил источник
Имеется класс TRecordset, работающий с базой данных, в одном методе MapFields заполняется словарь имён параметров, передаваемых базе
Код:
procedure TRecordset.MapFields;
var
i: integer;
str : string;
begin
FieldMap.Clear;
if VarIsEmpty(FDataset) then exit;
for I := 0 to FDataset.Fields.Count - 1 do
begin
str := VarToStr(Fields(I).Name);
FieldMap.Add(str, I); //**********
end;
end;
где FieldMap: TDictionary<string,integer>; FDataset: OleVariant;
класс создаётся обычно
TRecordset.Create
проблема в том, что если класс использовать вторично, т.е. не высвободить после однократного обращения к базе, то возникает эта ошибка(на строке отмеченой //**********), если же сделать TRecordset.Free, а потом снова TRecordset.Create и сделать запрос, то проблемы нет и всё отрабатывает успешно. Но дело в том, что ранее не надо было высвобождать его, а посылать несколько запросов, пользуясь одним экземпляром. Параметры str и I адекватные. Так у меня по всей программе, не хочется переписывать, да и это будет неправильно. Подскажите, в чем может быть проблема, как докопаться, что не нравится классу справочника FieldMap ?