Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
11. Sep 2008
Ja das freigeben war ja nicht so richtig das Problem, wie sich herausgestellt hat.
Ich verwende jetzt eine TObjectList,
und das Problem habe ich so gelöst:
If BEngine.Objects.IndexOf(WorldActor) >= 0 Then
BEngine.Objects.Delete(BEngine.Objects.IndexOf(WorldActor));
Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
10. Sep 2008
Ma ne frage zur TObjectList:
Der gibt mit ObjectList.Items ein TObject zurück.
Muss ich das einfach casten?
Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
10. Sep 2008
ja aber selbst als ich das hier verwendet habe:
For i := 0 To Objects.Count - 1 Do
begin
T3DObj(Objects).Free;
Objects := nil;
end;
aber da fällt mir ein:
Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
10. Sep 2008
Nein das nicht, da TList nur Pointer speichert.
Objects^ ist nur möglich, wenn Objects : ^T3dObj oder so wäre.
Das merkwürdige an der ganzen sache ist aber noch, dass selbst wenn ich
T3DObj(WorldActor).free;
If T3DObj(WorldActor) <> nil then
benutze gibt "T3DObj(WorldActor) <> nil" true zurück.
Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
10. Sep 2008
Also das ist so:
// Die Objekte
T3DCollideObj= class(T3DObj)
T3DMoveObj= class(T3DCollideObj)
T3DBlock = class(T3DMoveObj)
// das entfernen der Objekte:
For i := 0 To Objects.Count - 1 Do
Forum: Object-Pascal / Delphi-Language
Delphi
by olee,
10. Sep 2008
Hi,
Ich habe eine TList mit den Pointern zu Objekten von unterschiedlichem Typ
jedoch stammen alle diese von einem Grundtyp ab < XXX = class (T3dObj) >.
Nun ist mein Problem, dass ich diese Objekte auch wieder richtig freigeben muss.
Zuerst hatte ich T3DObj(ListemitObjekten.Items).Free;
Doch anscheinend funktioniert das nicht so recht.