НО: я всё ещё на уровне нуба, т.е. использую ея, как чёрный ящик, не имея представления, как она устроена под капотом (в отличие от обычных классов, строк и прочая, которые знаю до мелочей ещё с Дельфи 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;
взлетит, или итератор упадёт с страшным хряпом оттого, что у него выдернули коврик из под ног?
Пощупать не могу: до компилируемости проекту ещё семь вёрст лесом.





