exakt gleicher Code geht nicht.

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Silvio

Betreff: exakt gleicher Code geht nicht.

BeitragMo, Jul 08, 2013 6:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe innerhalb einer Pathfinding-Methode diesen Code-Abschnitt:

BlitzBasic: [AUSKLAPPEN]


Delete Each node
Delete Each open

node.node=New node
node\x=startx
node\y=starty
open.open=New open
open\node=node

.again

node=Null
cost=2147483647
For open = Each open

delta = Abs(open\node\x-endx)+Abs(open\node\y-endy)
If open\node\cost + delta < cost Then
cost=open\node\cost+delta
node=open\node
tempopen.open=open
EndIf
DebugLog "node\x: "+node\x
Next
DebugLog "node\x: "+node\x
If node = Null Then DebugLog "2" : Return
Delete tempopen


In einem Programm funktioniert der Code, in einem anderen funktioniert er nicht. Es ist exakt der gleiche Code. Bei dem Programm wo es nicht funktioniert, springt er hier aus der Methode raus:

BlitzBasic: [AUSKLAPPEN]
If node = Null Then DebugLog "2" :  Return 


und gibt "2" im Debugger aus, dabei sollte node garnicht Null sein. Ich habe es auch gecheckt wie man sieht. Innerhalb der For Schleife gebe ich erfolgreich ein Field von node im Debugger aus, dann nach der For Schleife wieder, doch da sagt er mir Object does not exist.

Der einzige Unterschied, der zwischen den beiden Programmen besteht, ist dass das, bei dem es funktioniert normales BlitzBasic ist also 2D und das wo es nicht funktioniert ist Blitz3D. Demnach wäre ja node bei Blitz3D lokal und außerhalb der For Schleife wieder null.

kann mir da jemand helfen?
vielen Dank
 

Kruemelator

BeitragMo, Jul 08, 2013 6:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast dort stehen:
BlitzBasic: [AUSKLAPPEN]
node=Null

Somit muss 2 im DebugLog ausgegben werden, es sei denn node wird zwischen dem Nullsetzen und dem DebugLog etwas zugewiesen.
Das passiert nur hier:
BlitzBasic: [AUSKLAPPEN]
node=open\node
 

Silvio

BeitragMo, Jul 08, 2013 7:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es nun selbst gelöst, indem ich den Type einfach nicht node genannt habe, da es sowieso verwirrt, wenn eine Instanz und der Type gleich heißen. Es funktioniert jetzt, aber ich fand es echt komisch, dass es bei dem anderen Programm funktioniert hat und da nicht.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group