AddElement bringt Win98 zum totalen absturz ...

Für allgemeine Fragen zur Programmierung mit PureBasic.
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

AddElement bringt Win98 zum totalen absturz ...

Beitrag von ShadowTurtle »

Guten Morgen,

Kann es sein das AddElement irgendwie Probleme macht nach dem man DeleteElement (oder ähnliches) benutzt hat?

cu

PS. Ich habe den Purebasic V3.90 Compiler.
tranquil
Beiträge: 117
Registriert: 22.09.2004 22:07
Kontaktdaten:

Beitrag von tranquil »

Ich würde mal empfehlen deine PBVersion mal auf die aktuellste Version upzudaten. Bei der Linked-List Lib wurden ne menge Updates in der letzten Zeit vollzogen.


Gruß
Mike
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag von ShadowTurtle »

Okay... aber nun kommt ein fehler bei folgender Zeile:
If E_Textur()\NextTextur\NextTextur<>0

Zum debuggen kam ich nicht. Weis jemand wieso das nicht mehr geht?

cu
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Was für eine Fehlermeldung gab es denn an dieser Zeile?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag von ShadowTurtle »

Da stand "Syntax Error". Hab das nun umständlich gelöst.

Von ... :

Code: Alles auswählen

  If E_Textur()\NextTextur\NextTextur <> 0
    E_Textur()\NextTextur = E_Textur()\NextTextur\NextTextur
  EndIf
zu ... :

Code: Alles auswählen

  ThisTextur = @E_Textur()
  ChangeCurrentElement(E_Textur(), E_Textur()\NextTextur)
  NextTex = E_Textur()\NextTextur
  ChangeCurrentElement(E_Textur(), ThisTextur)
  If NextTex <> 0
    E_Textur()\NextTextur = NextTex
  EndIf
Das ist aber nicht weiter das Problem, denn Zeit fürs optimieren bleibt immer.

Mein erst genanntes Problem existiert jetzt nicht mehr, es scheint aber trotzdem etwas nicht zu stimmen. Bin gerade dabei rauszufinden woran das nun wirklich liegt...

cu
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Irgendwo hier im Forum habe ich gelesen, dass zur Zeit in den LinkedLists der Wurm drinne ist.

Nimm eine frühere PB-Version (3.91), wenn es gar nicht mehr geht.


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag von ShadowTurtle »

Ich weis selbst das die Programmierung eigener Linkedlists routinen schief gehen kann - aber auch nur wenn man sich dafür keine Zeit lässt (~4 wochen).

Ich würde gerne die gesammte Linkedlists libary debugen. Könntest du mir dazu nicht den Code zusenden, @ Rings? Du machst ja anscheinend die OnError Library...

cu
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag von ShadowTurtle »

Sorry für Doppelpost, aber ich habe nun festgestellt das alles daran wirklich nur die Element Liste verwaltung von Purebasic Schuld ist.

Ich habe deswegen mein Debug loging stark erweitert um den Fehler zu finden.

In den letzten Zeilen des Logs kann man folgendes lesen:

Code: Alles auswählen

 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
Ab hier ist das Loging unterbrochen - wegen absturz natürlich.

Hier die Code Zeilen im Programm:

Code: Alles auswählen

  E_DebugLog("E_AddVertex", "Add vertex element.")
  AddElement( E_Vertex() )
Der absturz tritt nur auf, wenn man zuvor E_DeleteSurface aufgeruft hat. Also wenn folgende Codezeilen ausgeführt wurden:

Code: Alles auswählen

  E_DebugLog("E_DeleteSurface", "Delete Element.")
  DeleteElement(E_Surface())
Jetzt nochmal ganz langsam: Wie verwaltet Purebasic intern die Element Liste? Was muss ich dabei beachten? Welche bekannte Bugs oder Merkwürdigkeiten sind davon bekannt?

Es kann doch nicht sein das eine andere LinkedList rumspinnt, weil ich eine andere gelöscht habe.

cu

Code: Alles auswählen

 Log @ E_Init: Initalisiere OpenGL Fenster.
 Log @ E_Init: Setze OpenGL optionen.
 Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450084.
 Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450296.
 Log @ E_Init: Ok.
 Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450360.
 Log @ E_LoadTexture_RGBA: samplemedia\testtex1.RGB wurde geöffnet, ID: 8450412
 Log @ E_LoadTexture_RGBA: samplemedia\testtex2.RGB wurde geöffnet, ID: 8453132
 Log @ E_CreateCube: Make Cube...
 Log @ E_CreateCube: Make Wall 1
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Make Wall 2
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Make Wall 3
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Make Wall 4
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Make Wall 5
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Make Wall 6
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
 Log @ E_AddVertex: Set properitys
 Log @ E_AddVertex: Set LastVertex as next vertex
 Log @ E_AddVertex: Set his as LastVertex
 Log @ E_AddVertex: Add Vertices number...
 Log @ E_AddVertex: Give vertice number back..
 Log @ E_CreateCube: Delete Wall 4
 Log @ E_DeleteSurface: -----------------------------
 Log @ E_DeleteSurface: Set Surface ...
 Log @ E_DeleteSurface: Delete Vertices
 Log @ E_DeleteSurface: Quest: Have this Entity more Surfaces?
 Log @ E_DeleteSurface: Answer: Yap.
 Log @ E_DeleteSurface: Scan each Surface...
 Log @ E_DeleteSurface: Jump on next Element for Scan.
 Log @ E_DeleteSurface: When Surface as 'next' found, than Delete next Surface.
 Log @ E_DeleteSurface: Save Act. Surface Element.
 Log @ E_DeleteSurface: Jump on next Element.
 Log @ E_DeleteSurface: Save his next Element.
 Log @ E_DeleteSurface: Jump on prev Element (from Act.).
 Log @ E_DeleteSurface: Set NextSurface from Prev. Surf. to the Overnext.
 Log @ E_DeleteSurface: Delete Element.
 Log @ E_DeleteSurface: Set Surface Counter -1
 Log @ E_DeleteSurface: Set E_Surface on 0
 Log @ E_DeleteSurface: End Delete
 Log @ E_CreateCube: Make Cube...
 Log @ E_CreateCube: Make Wall 1
 Log @ E_CreateSurface: -----------------------------
 Log @ E_CreateSurface: Set Entity ...
 Log @ E_CreateSurface: Save last Surface ...
 Log @ E_CreateSurface: Add Element for Surface
 Log @ E_CreateSurface: Set Entity Handle in the Surface
 Log @ E_CreateSurface: Set next surface from last surface
 Log @ E_CreateSurface: Set last Surface with this surface
 Log @ E_CreateSurface: add surface counter
 Log @ E_CreateSurface: Surface is Created - now give it back.
 Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
 Log @ E_AddVertex: Add vertex element.
Antworten