Selbstprogrammierte LinkedList

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Ich denke, dass ich einen Bug in Item() gefunden habe.

Hier mal stückchen Code:

Code: Alles auswählen

    If (dllVarBank\CountItems()-1) = dllVarBank\Index()
        dllVarMemm = dllVarBank\AddItem()
        dllVarMemm = CreateList(SizeOf(sVariable))
        
        dllVarMemm = dllVarBank\Item()
    Else
        dllVarBank\NextItem()
        dllVarMemm = dllVarBank\Item()
    EndIf
In dieser Form stürzt das Programm immer ab. Aber wenn ich [c]dllVarMemm = dllVarBank\Item()[/c] aus kommentiere funktionier alles.
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Dann wäre da noch ein Bug :| :cry: :

Code: Alles auswählen

Structure sVariable                 ;/ Variable
    varName.l                       ; Numerischer Name
    varType.l                       ; Typ der Variable
    varDynn.b                       ; #True: Dynamisch ; #False: Statisch
    varSize.l                       ; Größe der Variable
    varPtr.l                        ; Pointer zu der Variable
EndStructure

IncludeFile "DynamicLL.pbi"

Global dllVarBank.List
Global dllVarMemm.List

Procedure cMain()
    dllVarBank = CreateList(SizeOf(List))
EndProcedure

Procedure SYSM_IVB()
    DefType.List dliItem
    
    If (dllVarBank\CountItems()-1) = dllVarBank\Index()
        dllVarMemm = dllVarBank\AddItem()
        dllVarMemm = CreateList(SizeOf(sVariable))
    Else
        dllVarBank\NextItem()
    EndIf
EndProcedure

Procedure NewVar()
    DefType.sVariable *varNewVar
    DefType.l lngMemory
    
    lngMemory = AllocateMemory(2500)
    
    *varNewVar = dllVarMemm\AddItem()
    Debug dllVarMemm\CountItems()
    
    *varNewVar\varName = 5
EndProcedure

cMain()
SYSM_IVB()
NewVar()
NewVar()
NewVar()
NewVar()
NewVar()
Der Code stürzt bei der zeile [c]If *NextItem[/c] in der Funktion [c]AddItem()[/c] ab. Dies tritt aber erst nach mehrmaligen Hinzufügen von Items ein. Wenn ich in der Struktur sVariable am anfang, vor varName, noch ein Element einfüge, funktioniert alles.
Bild
Antworten