In der selben
Unit und in Units, welche die erste
Unit einbinden, da könnte es das nur einmal geben, aber bei zwei Units, welche sich nicht kennen, da eventuell nicht.
Zu dem Pack:
Also das ist schon ein komisches Zeug, denn der Code wird in den Units garnicht aufgerufen.
Und das Left/Right in der Methode ist nirgendwo definiert. (ist wohl Compiler-Magic?)
Und scheint es nur so, oder kann in einer generischen TList<> eventuell kein NIL-Objekt abgelegt werden, da Pack dafür da ist, um die zu entfernen? [add] Aber das funktioniert nicht, drum knallt es.
Als TList>TObject> funktioniert folgender Code, aber als TObjectList<TObject> macht es bumm.
Delphi-Quellcode:
var
L: TList<TObject>;
begin
L := TObjectList<TObject>.Create; //List<TObject>.Create;
ShowMessage(IntToStr(L.Count));
L.Add(nil);
ShowMessage(IntToStr(L.Count));
L.Add(Self);
ShowMessage(IntToStr(L.Count));
L.Add(Self);
ShowMessage(IntToStr(L.Count));
L.Add(nil);
ShowMessage(IntToStr(L.Count));
L.Remove(Self);
ShowMessage(IntToStr(L.Count) + ' ' + IntToStr(L.IndexOf(Self)));
L.Delete(L.IndexOf(Self)); // bei TObjectList knallt es hier
ShowMessage(IntToStr(L.Count));
L.Free;
end;