![]() |
Problem mit TQue
Warum bekomme ich die fehlermeldung (siehe quellcode)??
Delphi-Quellcode:
procedure Tmaze.PrimGenerator;
var //[..] FieldID:Tpoint; Q:TQueue; begin //Prepare Maze Memory Image //[..] //init Algorithm randomize; FieldID.x:=random(width);//integer für Labyrinth(maze) Zellen koordinaten FieldID.y:=random(Height);//integer für Labyrinth(maze) Zellen koordinaten q.Create; q.Push(addr(FieldID)); //So hier nur mal zum testen //Will ich top von Q (q.pop) wieder unter FieldID Speicher. //Bin mir aber nie sicher wo das dumme ^ding hinkommt - also eigentlich schon klar, aber bekomme fehler meldung: FieldID:=q.Pop^; //[Error] MazeClass.pas(291): Incompatible types: 'TPoint' and 'procedure, untyped pointer or untyped parameter' hmm ich hoffe die kommentare im quelltext genügen wenn nicht bitte sagen! |
Re: Problem mit TQue
Du musst ihm schon sagen, als was er den Zeiger aus Pop benutzen soll. ;)
Delphi-Quellcode:
...
queue.Push(@Field); ... Field := TPoint(queue.Pop^); |
Re: Problem mit TQue
oha.... dies wird so krachen.....
vermutlich wird der Stack, auf dem FieldID zum Zeitpunkt von Push gelegen hat, zum Zeitpunkt von Pop nicht mehr existieren... ein Pointer in's nichts also.... deshalb besser so:
Delphi-Quellcode:
var
FieldID : PPoint; q : TQueue; begin // ... new(FieldID); FieldID^.X:=... FieldID^.Y:=... q.push(FieldID); // ... später ... FieldID:=q.pop(); ... FieldID^.X ... dispose(FieldID); // ... end; |
Re: Problem mit TQue
Moin!
Ich sehe erstmal das Problem beim anlegen der TQueue Instanz - es ist der gleiche Fehler wie vorhin, nicht Skyrunner2?
Delphi-Quellcode:
q ist eine Variable und muss die Instanz zugewiesen bekommen - diese erhälst du vom Konstruktor, welchen du mit KlassenName.Create aufrufst.
q.Create;
Also sollte es so lauten:
Delphi-Quellcode:
MfG
q := TQueue.Create;
Muetze1 |
Re: Problem mit TQue
Zitat:
*an stirn klopf*ach ja... :oops: was lernen wir:? nie zu lange aufbleiben... dann kommen nur noch dumme fehler! habs jetzs so wie das Basilikum vogeschlagen hat gelöst.. danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz