где хранятся копии классов, не создаются, а существующие добавляются и не разрушаются при удалении массива. При проверке - меняется один элемент на другой. Когда решил избавиться от повторного обращения по индексу - появился хинт, что присваивание в Item - не используется.
PSec = ^TSec
TSec = class
ASecList.Items: array of TSec;
Sec: TSec;
{1}
if (ASecList.Items[Index].F.ToValue < Sec.F.ToValue) then
ASecList.Items[Index] := Sec;
{2}
var Item := ASecList.Items[Index];
if (Item.F.ToValue < Sec.F.ToValue) then
Item := Sec; // Compiler Hint
Как заменить элемент быстро? )
Похоже, что так?
var PItem := PSec(ASecList.Items[Index]);
if (PItem.F.ToValue < Sec.F.ToValue) then
PItem^ := Sec;
предлагаю выкинуть все указатели, класс и так ссылочный тип
Я этим и руководствовался, но что не нравится компилятору (Д11)?
ну, это правильно же — Item присваивается дважды
Обсуждают сегодня