Показать сообщение отдельно
  #5  
Старый 25.09.2010, 13:33
blackswan blackswan вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 4
Репутация: 10
По умолчанию

у меня аналогичная проблема,имеется проект под 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 ?
Ответить с цитированием