AGB  ·  Datenschutz  ·  Impressum  







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

[Bughunt] A-Stern Implementierung

Offene Frage von "Romi"
Ein Thema von Romi · begonnen am 16. Mai 2009 · letzter Beitrag vom 16. Mai 2009
Antwort Antwort
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#1

[Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 20:10
Hi,

ich versuche gerade aus Neugier den A*-Algorythmus zu implementieren. Dazu bin ich dem Pseudocode im zugehörigen Wikipedia-Artikel gefolgt. Es kompiliert alles fein und stürzt auch nicht ab, und genau das ist das Problem: Reine Logikfehler sind die schlimmsten

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

Im Anhang die entsprechnden Units.

Danke schonmal,
Roman

Edit: URL-BBcode kaputt?
Angehängte Dateien
Dateityp: 7z wegfindung_104.7z (2,1 KB, 2x aufgerufen)
Dateityp: zip wegfindung_689.zip (2,3 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 20:14
Anhang?
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#3

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 20:19
Verdammt, ich wusste ich hatte etwas vergessen

Nun ist er da.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 20:54
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
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#5

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 21:03
Nicht ganz das Thema, aber ich bin natürlich für jede Verbesserung meines Stils dankbar

Zitat von omata:
- Objekte werden nicht mit destroy freigegeben (free!)
Wofür gibt es denn dann die Möglichkeit, einen eigenen Destructor zu schreiben?

Zitat von omata:
- Destructor sollte nicht leer sein (inherited + override)
Okay, es erbt von tObject, aber das hat doch nicht zwingent den selben destructor wie ich. Was wird denn da inherited?

Zitat von omata:
- Empfehlung: Fehlersuche, Debugger verwenden
Ja, okay, weiß ich. Aber ich finde den Fehler nunmal nicht

Zitat von omata:
- Beispielumgebung für die Fehlersuche wäre auch nicht schlecht
Mh, ich habe eine geschrieben, die läuft allerdings mit Andorra2D. Ich dachte mir, dass es wenig nützlich ist, wenn man erst noch Units dazuinstallieren muss und dass es schneller geht, wenn man sich einfach die drei Zeilen in eine eigene Unit macht.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 21:12
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#7

Re: [Bughunt] A-Stern Implementierung

  Alt 16. Mai 2009, 21:38
Zitat von Romi:
Wofür gibt es denn dann die Möglichkeit, einen eigenen Destructor zu schreiben?
Der Destructor wird von Free aufgerufen.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 14:04 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