derzeit habe ich einen kuriosen Fehler in meinem Programm. Ich füge einer Liste ein Element hinzu und möchte gleich danach den Index (Die Position in der Liste) haben.
In meinem Vorzeigeprogramm funktioniert es einwandfrei, nur in meinem richtigen Programm nicht. Ich poste mal Beides.
Hattet ihr auch schon einmal so etwas? Ich frage mich, wo ich da ansetzen soll, ich meine, ich arbeite ohne Threads und der Fehler ist einfach kurios Oo
Das Programm friert einfach ein, Windows meldet dann keine Rückmeldung. Durch etliche Debug habe ich dann herausgefunden, dass es nach ListIndex() einfach nicht mehr weitergeht im Programmablauf.
1. Verdacht: Comodo
Nein, ist es nicht, nach abgeschaltenem Comodo tritt das Problem weiterhin auf.
Hier einmal der Programmschnipsel, in dem das Problem auftritt (Nicht lauffähig):
Code: Alles auswählen
With terrain(terAlt\x, terAlt\y)
;Das "Verschieben" des Verwaltungsteils des Baumes.
;SelectElement(\Baeume(), entList()\zugehoer)
ChangeCurrentElement(\Baeume(), entList()\zeiger)
;SuchBaumPlatz(terrainX, terrainY)
AddElement(terrain(terrainX, terrainY)\Baeume())
Debug "terrainX:" + terrainX + "terrainY:" + terrainY
Debug ListIndex(terrain(terrainX, terrainY)\Baeume()) ;-XXXXXXXXXXXXXXXXXXX Hier Tod
Debug "öo"
terrain(terrainX, terrainY)\Baeume()\wurzel = \Baeume()\wurzel
terrain(terrainX, terrainY)\Baeume()\stamm = \Baeume()\stamm
terrain(terrainX, terrainY)\Baeume()\blaetter = \Baeume()\blaetter
For zaehler = 0 To #AesteMax
If \Baeume()\aeste[zaehler]\meshID = #True
terrain(terrainX, terrainY)\Baeume()\aeste[zaehler]\meshID = #True
terrain(terrainX, terrainY)\Baeume()\aeste[zaehler]\entNr = \Baeume()\aeste[zaehler]\entNr
Else
terrain(terrainX, terrainY)\Baeume()\aeste[zaehler]\meshID = #False
EndIf
Next zaehler
terrain(terrainX, terrainY)\Baeume()\lebenPunkte\akt = \Baeume()\lebenPunkte\akt
terrain(terrainX, terrainY)\Baeume()\lebenPunkte\max = \Baeume()\lebenPunkte\max
terrain(terrainX, terrainY)\Baeume()\lebenZeit\akt = \Baeume()\lebenZeit\akt
terrain(terrainX, terrainY)\Baeume()\lebenZeit\max = \Baeume()\lebenZeit\max
terrain(terrainX, terrainY)\Baeume()\lebenZeit\stufe = \Baeume()\lebenZeit\stufe
terrain(terrainX, terrainY)\Baeume()\typ = \Baeume()\typ
;\Baeume()\typ = #BI_None ;-OOOOOOOOOOOOOOOOOOOOOOOOO Hier den Rest auch noch auf "0" setzen.
;Das "Verschieben" der Objektlisteneinträgen
Debug "0"
zugehoer = ListIndex(terrain(terrainX, terrainY)\Baeume())
Debug "1"Code: Alles auswählen
EnableExplicit
Structure Vektor2i
x.i
y.i
EndStructure
Structure treeVer
nummer.i
EndStructure
Structure obVer
zeiger.i
string.s
EndStructure
Structure terVer
;inVer.i
List Objekte.obVer()
List Baeume.treeVer()
EndStructure
Dim test.terVer(1, 1)
;NewList temp.i()
Define.Vektor2i terAlt, terNeu
Define.i temp
terNeu\x = 1
terNeu\y = 1
;Fill
With test(terAlt\x, terAlt\y)
AddElement(\Baeume())
\Baeume()\nummer = 1
AddElement(\Objekte())
\Objekte()\zeiger = @\Baeume()
\Objekte()\string = "1"
AddElement(\Baeume())
\Baeume()\nummer = 2
AddElement(\Objekte())
\Objekte()\zeiger = @\Baeume()
\Objekte()\string = "2"
EndWith
;Use
; AddElement(temp())
SelectElement(test(terAlt\x, terAlt\y)\Objekte(), 1)
temp = test(terAlt\x, terAlt\y)\Objekte()\zeiger
; temp() = @\Baeume()
;Move
With test(terAlt\x, terAlt\y)
ChangeCurrentElement(\Baeume(), temp)
AddElement(test(terNeu\x, terNeu\y)\Baeume())
Debug ListIndex (test(terNeu\x, terNeu\y)\Baeume())
EndWith
;Use
; AddElement(temp())
SelectElement(test(terAlt\x, terAlt\y)\Objekte(), 0)
temp = test(terAlt\x, terAlt\y)\Objekte()\zeiger
; temp() = @\Baeume()
;Move
With test(terAlt\x, terAlt\y)
ChangeCurrentElement(\Baeume(), temp)
AddElement(test(terNeu\x, terNeu\y)\Baeume())
Debug ListIndex (test(terNeu\x, terNeu\y)\Baeume())
EndWith
EndThread verschoben
Bugs>Allgemein
27.02.2014
RSBasic
