Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Finalize и ошибки.   Найти похожие ветки 

 
AlexanderMS ©   (2007-03-09 08:37) [0]

Вот процедура удаления элемента типа записи из общего массива:

procedure TQuestions.Delete(Index: integer);
begin
//  FList[Index].Answers.Free;
//  FList[Index].FormatSettings.Free;
 Finalize(FList^[Index]);

 Dec(FCount);

 if Index < FCount then
   System.Move(FList^[Index + 1], FList^[Index],
     (FCount - Index) * SizeOf(TQuestion));

end;

Если убрать комментарии, то ошибки появляются в самых неожиданных и "надёжных" местах. Если оставить, то ошибок нет, но я не знаю: вдруг не вся занятая ранее память освободится в результате вызова Finalize? Как сделать правильно, и что делает Finalize с объектами-полями записи вообще? Надо ли их освобождать до Finalize?


 
Сергей М. ©   (2007-03-09 08:54) [1]


> Надо ли их освобождать до Finalize?


Да. надо.

Цитата:

the compiler generates code that finalizes all long strings, variants, and interfaces contained by the variable when the instance is destroyed


 
DrPass ©   (2007-03-09 17:22) [2]

А может быть, вообще эту чехарду не стоило было делать, а просто использовать TList?



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
2-1173093131
vtur
2007-03-05 14:12
2007.04.01
курсор мыши


2-1173712140
dimak
2007-03-12 18:09
2007.04.01
как вытянуть значение компонета ТLabel или ТEdit


2-1173097926
M1sT
2007-03-05 15:32
2007.04.01
Поиск в базе и создание отчета по результатам поиска...


2-1173663124
Andrewww
2007-03-12 04:32
2007.04.01
Позиция в строке


2-1173869504
T.V
2007-03-14 13:51
2007.04.01
Вопрос по ф-ции LockFile