НО: я всё ещё на уровне нуба, т.е. использую ея, как чёрный ящик, не имея представления, как она устроена под капотом (в отличие от обычных классов, строк и прочая, которые знаю до мелочей ещё с Дельфи 2 (это который первый 32-битный).
Вопрос в студию:
- Код: Выделить всё
procedure TVisualsMap.TrashExpired(start: pqword; limit: TUsecDeltaVal);
var
it: TIterator;
v: TVisual;
begin
if IsEmpty then Exit;
CS.Enter;
it:= Min;
repeat
v:= it.Value;
if (v.Expiration > 0) and (v.LockCount < 1)
and (Mother^.State.CurrentFrame - v.LastEvoked > v.Expiration)
then begin
SetLength(Trash, Length(Trash) + 1);
Trash[High(Trash)]:= v;
Delete(it.Key)
end;
until (UsecDelta(start) > limit) or not it.Next;
CS.Leave;
end;
взлетит, или итератор упадёт с страшным хряпом оттого, что у него выдернули коврик из под ног?
Пощупать не могу: до компилируемости проекту ещё семь вёрст лесом.