Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variable Required


knittel - So 06.03.11 15:13
Titel: Variable Required
Hallo allerseits,
Ich habe ein Problem im Zusammenhand mit pointern und der TObjectList. Denn ich rufe in dem constructor einer Einheit folgendes auf:

Delphi-Quelltext
1:
2:
3:
4:
constructor TZRessourceUnit.CreateConnect(ConnectedTo, Team, AtX, AtY: cardinal);
begin
[...]
FConnected := @ListOfUnits.Items[ConnectedTo];


In ConnectedTo übergebe ich den index des objekts mit dem diese einheit verbunden werden soll. FConnected ist vom Typ ^TGameObject und alle Einheiten in der TObjectList sind TGameObjects. Allerdings gibt Delphi die Fehlermeldung: "Variable Required".
Ich hab den error mal gegoogelt und da heisst es, dass man den @-operator nur auf variablen und nicht auf konstanten wie "1" oder "37" setzen kann. Allerdings ist ja ListOfUnits.Items[ConnectedTo] eine Variable. Ich habe es auch schon mit @ListOfUnits.Last probiert. Er gibt immer die selbe Fehlermeldung.

Danke im voraus;


jaenicke - So 06.03.11 15:49

Items ist eine Eigenschaft. ;-)


knittel - Mo 07.03.11 11:26

Aber wie schaffe ich es dann, dass er auf ein gewisses Objekt einer Objektliste zeigt?


jaenicke - Mo 07.03.11 11:41

Ohne das @. Ein Objekt ist bereits ein Zeiger. Das @ brauchst du, wenn du einen Zeiger auf die Adresse brauchst, an der der Zeiger auf das Objekt liegt...


knittel - Mo 07.03.11 12:03

ja. stimmt. wieso bin ich darauf nicht selbst gekommen?
Danke. :)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

jetzt erhalte ich die fehlermeldung:
Inkompatible typen: "Tobject" and "pointer"


jaenicke - Mo 07.03.11 12:21

Dann hast du vergessen beim Typ deiner Variable bzw. deines Felds den Pointeroperator ^ zu entfernen.