Seite 3 von 3

Verfasst: 05.05.2005 15:43
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.

Verfasst: 05.05.2005 16:52
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.