![]() |
n-Dame: Darstellung schlägt fehl
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen :-D.
Auch wenn ich einige Startschwierigkeiten hatte (die dank eurer tatkräftigen Unterstützung behoben wurden), hab ich es jetzt schon fast geschafft mein n-Dame-Problem zu lösen. Das Problem ist, dass er bei der Visualisierung der Damen auf dem "Schachbrett" einen Fehler ausgibt, und zwar bei allen Versuchen nach der 16. Lösung. Ich habe schon alle mir bekannten Hilfestellungen von Delphi ausgenutzt (Ich habe das Programm im Einzelschrittmodus durchlaufen lassen. Es hat 2 Stunden gedauert, aber geholfen hat es auch nichts, weil die Variablen gerade dort nicht verfügbar waren :-() nur komm ich lieder nicht weiter. Ich hab mein Programm angehängt. Er wäre sehr nett wenn sich dasjemand mal ansieht, und mir einen Tip geben kann wie ich es besser lösen könnte, oder vielleicht sogar mein Programm zum Laufen bringen kann. Danke schon einmal im Voraus für die Hilfe. |
Re: n-Dame: Darstellung schlägt fehl
Ich versteh zwar nicht was dein Programm da genau macht. Aber ist ja auch egal.
Jedefalls hilft es wirstschaften, wenn man den beanspruchten Speicher auch wieder freigibt. Ich hab das an 2 Stellen getan .. und siehe da: Der Fehler ist weg.
Delphi-Quellcode:
PROCEDURE Damen_visualisieren (spalte,zeile:integer);
var damebild:TBitmap; begin damebild:=TBitmap.Create; damebild.LoadFromFile('dame.bmp'); DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild); damebild.Free; //Hier ... end; PROCEDURE Damen_loeschen (spalte,zeile:integer); var damebild:TBitmap; begin damebild:=TBitmap.Create; damebild.LoadFromFile('leer.bmp'); DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild); damebild.Free; // ... und hier end; |
Re: n-Dame: Darstellung schlägt fehl
.... und das dann noch in Try-Finally Blöcke kapseln und Du hast ein wirklich robustes Programm.
Delphi-Quellcode:
Dann wird der Speicher auch dann freigegeben, wemm beim 'LoadFromFile' oder dem anschließenden Draw etwas schief geht.
PROCEDURE Damen_visualisieren (spalte,zeile:integer);
var damebild:TBitmap; begin damebild:=TBitmap.Create; Try // *********** damebild.LoadFromFile('dame.bmp'); DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild); Finally // ****** damebild.Free; //Hier ... end; //********* end; PROCEDURE Damen_loeschen (spalte,zeile:integer); var damebild:TBitmap; begin damebild:=TBitmap.Create; Try // ******************* damebild.LoadFromFile('leer.bmp'); DrawGrid1.Canvas.Draw(((spalte*30)+spalte)-31,((zeile*30)+zeile)-31,damebild); Finally //**************** damebild.Free; // ... und hier end; //****************** end; Weiterhin könnte man einfach zwei Bitmaps global deklarieren (oder in der Form) und die beiden Bilder einmalig beim Programmstart laden. Dann erübrigt sich das Ganze sowieso. Ach ja: Im FormDestroy die beiden Bitmaps wieder freigeben. |
Re: n-Dame: Darstellung schlägt fehl
Und wieder einmal ein großes Dankeschön. Es geht wunderbar.
:-D :thumb: |
Re: n-Dame: Darstellung schlägt fehl
Liste der Anhänge anzeigen (Anzahl: 1)
Dein Problem ist zwar inzwischen behoben - aber da ich mir die Mühe schon gemacht habe, ist hier meine Version zur Lösung des 8-Damen-Problems.
Zur Info : Es gibt im Prnzip 12 Lösungen, die durch Spiegeln/Drehen in insgesamt 96 Lösungen umgewandelt werden können. Von diesen 96 sind 4 identisch, so daß sich 92 (von der Notation her) verschiedene Lösungen ergeben. Klicke auf den Button 'Nur Liste'. Wenn Du Die Stellungen auf dem 'Brett' sehen willst, klicke aud den entsprechenden Eintrag in der Listbox. Gruß, Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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