AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TQue

Ein Thema von Skyrunner2 · begonnen am 28. Feb 2005 · letzter Beitrag vom 28. Feb 2005
Antwort Antwort
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#1

Problem mit TQue

  Alt 28. Feb 2005, 01:08
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!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Problem mit TQue

  Alt 28. Feb 2005, 01:23
Du musst ihm schon sagen, als was er den Zeiger aus Pop benutzen soll.

Delphi-Quellcode:
...
   queue.Push(@Field);
...
   Field := TPoint(queue.Pop^);
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit TQue

  Alt 28. Feb 2005, 01:31
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;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Problem mit TQue

  Alt 28. Feb 2005, 01:59
Moin!

Ich sehe erstmal das Problem beim anlegen der TQueue Instanz - es ist der gleiche Fehler wie vorhin, nicht Skyrunner2?

       q.Create; q ist eine Variable und muss die Instanz zugewiesen bekommen - diese erhälst du vom Konstruktor, welchen du mit KlassenName.Create aufrufst.

Also sollte es so lauten:

       q := TQueue.Create; MfG
Muetze1
  Mit Zitat antworten Zitat
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Problem mit TQue

  Alt 28. Feb 2005, 10:28
Zitat von Muetze1:
Moin!

Ich sehe erstmal das Problem beim anlegen der TQueue Instanz - es ist der gleiche Fehler wie vorhin, nicht Skyrunner2?

       q.Create; q ist eine Variable und muss die Instanz zugewiesen bekommen - diese erhälst du vom Konstruktor, welchen du mit KlassenName.Create aufrufst.

Also sollte es so lauten:

       q := TQueue.Create; MfG
Muetze1
jo...
*an stirn klopf*ach ja...


was lernen wir nie zu lange aufbleiben... dann kommen nur noch dumme fehler!

habs jetzs so wie das Basilikum vogeschlagen hat gelöst..

danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz