![]() |
[Bughunt] A-Stern Implementierung
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
ich versuche gerade aus Neugier den A*-Algorythmus zu implementieren. Dazu bin ich dem Pseudocode im ![]() Nun, meine Funktion BerechneWeg sollte das Zielfeld (zu dem der Weg gesucht wurde) zurückgeben, damit man über den Vorgängerzeiger den Weg zurückverfolgen kann. Das Problem ist nun, er gibt immer nil zurück, was er eigentlich nur machen sollte wenn kein Weg existiert, er also abbricht, weil die OpenQueue leer ist. Ich stehe auf dem Schlauch, vllt. habe ich auch einfach nur zu lang auf den Code geschaut um den Fehler noch zu sehen :gruebel: Im Anhang die entsprechnden Units. Danke schonmal, Roman Edit: URL-BBcode kaputt? |
Re: [Bughunt] A-Stern Implementierung
Anhang?
|
Re: [Bughunt] A-Stern Implementierung
Verdammt, ich wusste ich hatte etwas vergessen ;)
Nun ist er da. |
Re: [Bughunt] A-Stern Implementierung
Erstmal einige Punkte...
- Objekte werden nicht mit destroy freigegeben (free!) - Destructor sollte nicht leer sein (inherited + override) - Empfehlung: Fehlersuche, Debugger verwenden - Beispielumgebung für die Fehlersuche wäre auch nicht schlecht |
Re: [Bughunt] A-Stern Implementierung
Nicht ganz das Thema, aber ich bin natürlich für jede Verbesserung meines Stils dankbar ;)
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: [Bughunt] A-Stern Implementierung
Klar gibt es nunmal immer Gegenargumente, wollte nur mal den Standard erwähnen.
Ja, das mit den zusätzlichen Units ist gut überlegt. Da ich aber keine Lust habe mir erstmal eine Umgebung zu erstellen, in der ich dann dein Problem rekonstruieren kann, werden ich mich gleich wieder ausklinken. - Es sind auch noch Speicherlecks vorhanden. - Ist bei dir auch die Bereichsprüfung aktiviert? Naja, findet sich bestimmt noch jemand... Viel Glück |
Re: [Bughunt] A-Stern Implementierung
Zitat:
OK, das Inherited hat bei Ableitungen von TObjekt noch keine große Auswirkung, da TObject eh einen leeren Dummy-Destructor hat (damit man was zum Überschreiben hat, es aber nicht muß, wenn es nicht nötig ist) Aber wenn du mal von etwas erbst, welches da was drin hat, dann gibt's Spaß ... also besser einfach immer ein Inherited rein, dann vergißt man es mal nicht. Override ... wenn man mal dein Objekt über einen Typ einer der Vorfahrenklassen freigibt, dann sollte immer der "richtige"/nötige Destructor in der Wurzelklasse verankert sein, damit auch in dieser Richtung nichts bei Freigeben vergessen wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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-2025 by Thomas Breitkreuz