[GELÖST] Programm hängt sich auf
Übersicht

Boris1993Betreff: [GELÖST] Programm hängt sich auf |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Ich bin bei meinem Projekt auf einen Fehler gestoßen, wo ich einfach nicht hinterblicke. Mein Programm erstellt nach einer zeit an einem Punkt der sich definitiv innerhalb des Images befindet einen neuen Pixel. 2 mal klappt dies auch doch beim nächsten mal kommt immer die Fehlermeldung "Pixmap coordinates out of bound". Diese Funktion benutze ich um den Pixel zu zeichnen: Code: [AUSKLAPPEN] Function drawpixel(img:TImage, x:Byte, y:Byte, r:Byte, g:Byte, b:Byte, a:Byte = 255)
pixmap = LockImage(img) WritePixel pixmap, x, y, a*$1000000 + r*$10000 + g*$100 + b pixmap = Null UnlockImage(img) GCCollect() End Function und diese methode verursacht anscheinend den bug: Code: [AUSKLAPPEN] Method roots()
If time.timer(3, 100) = 1 For Local seed:TFlora = EachIn seedL If Not seed.cells = 0 For Local cell:TFlora = EachIn seed.cells Local wmax:Byte Local ex:Byte = False For Local nx:Int =-1 To 1 For Local ny:Int = -1 To 1 If nx = 0 And ny = 0 Exit End If If map.wlvl[seed.x+nx, seed.y+ny] > wmax wmax = map.wlvl[seed.x+nx, seed.y+ny] End If Next Next For Local nx:Int =-1 To 1 For Local ny:Int = -1 To 1 If nx = 0 And ny = 0 Exit End If If map.wlvl[seed.x+nx, seed.y+ny] = wmax Local ncell:TFlora = New TFlora ncell.x = cell.x+nx ncell.y = cell.y+ny cell.typ = 1 ListAddLast seed.cells, ncell drawpixel(flora.plants, ncell.x, ncell.y, 200, 180, 170) ex = True End If If ex = True Exit Next If ex = True Exit Next Next End If Next End If End Method Ich weiß nicht ob dieser Code ausreicht um den Fehler auszumachen da das Programm mitlerweile recht komplex geworden ist. Schonmal Vielen dank wenn mir jemand weiterhelfen kann. Gruß Boris |
||
- Zuletzt bearbeitet von Boris1993 am So, Mai 27, 2012 9:09, insgesamt 2-mal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welche Werte haben x und y innerhalb drawpixel() wenn der Fehler auftritt und wie gross ist das Bild? | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Boris1993 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also die Pixel befinden sich noch innerhalb des Images wenn der Fehler auftritt. An den Koordinaten scheint es nicht zu liegen. Es ist immer bei dem Dritten Pixel den das Programm aufruft und danach zeigt er noch einmal den Wert an aber bleibt irgendwie in der Schleife stecken, wo die Pixel erstellt werden glaube ich. Ich hab mit drawtext mir die Pixelkoordinaten anzeigen lassen und irgendwann wurden wurden die nurnoch übernander geschrieben also heißt das das Programm ist nicht mehr in der Hauptschleife zu cls gelangt und hat dann wahrscheinlich immer weiter pixel erstellt bis es doch ausserhalb des Bildes war. hmmmmmmmmmm ![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass dir die Koordinaten doch mal mit Print ausgeben, dann erscheinen sie in der Output-Konsole und du behältst den Überblick. Oder du baust DebugStop an geeigneter Stelle in deinen Code rein und führst das Programm im Debug-Mode aus, dann kannst du dir die Werte von Variablen anschauen. Unter Umständen klickst du dich dann aber auch wie dämlich durch den Programmablauf, bis der Fehler mal auftritt, aber wenn der Fehler immer beim 3. Pixel erfolgt, sollte das noch human ablaufen.
mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Boris1993 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke ich wusste bisher gar nicht das es solche debug möglichkeiten gibt bin noch ein ziemlicher anfänger mit blitzmax gibts fürs debuggen vllt ein kleines tutorial? ach schon gut ich hab grad in der ide hilfe den debugging eintrag gefunden ![]() |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, so schwer ist das nicht, wenn man sich da erstmal dran gewöhnt.
Wie Holzchopf schon sagte, immer eine Zeile bevor der Fehler kommt die notwendigen Variablen printen lassen, das sind dann die, die in der Funktion benötigt werden, in welcher der Fehler kommt. Ich hab mir deinen Code nicht wirklich angeschaut, aber ich vermute mal, dass der Fehler bei den Koordinaten kommt, bei welchen das Bild seine Maximalgröße hat. Wenn du eine Pixmap der Größe (20|20) erstellst, musst du von 0-19 zeichnen. Wenn du nun bei 20 zeichnen wollen würdest, käme so ein out of bound-Fehler. Ich vermute mal, dass das bei dir der Fall ist. |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Midimaster hat eine Reihe von Anfänger-Tutorials geschrieben, darunter ein Fehler-suchen-Tutorial. Ist zwar für BB geschrieben, aber die Grundsätze kannst du auch in BMax anwenden. | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Boris1993 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das ist schon bei mir der Fall, aber der eigentliche Fehler geschieht früher, da sich der Code irgendwie in der Schleife aufhängt und nichtmehr zurück zur Hauptschleife kommt daher erstellt sie blitzschnell so viele punkte bis es ausserhalb der pixmap ist. Ganz komische sache ![]() Edit: Ich glaub ich hab den Fehler jetzt verstanden. Die funktion geht alle einträge der Liste cells durch und erstellt innerhalb noch einen neuen cell eintrag daher kommen immer neue cells dazu ich muss eigentlich nur ein exit machen. ![]() ![]() Danke nochmal für die Hilfe ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group