Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.041 c