fb:porticula NoPaste
test_linkedlist_any.bas
Uploader: | ThePuppetMaster |
Datum/Zeit: | 14.04.2009 15:27:33 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts Linked List, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
'Soll die LinkedList Thread-Save Kompiliert werden (wenn mehrere Threads auf die selbe Linked List zugreifen könnten)
'dann sollte die folgende Definition hinzugefügt werden
#define LL_DEF_ThreadSafe 'Compiler-Direktive für THREAD-Safe-LinkedList angeben
#include once "linkedlist.bi" 'Die Funktionen zur Linkedlist verwaltugn includieren
Dim List as LinkedList 'Eine neue Variable erstellen, welche die LinkedList speichert
Dim TItem1 as LinkedList 'Itemvariable
Type MyUDT 'Ein UDT erzeugen
V_Var1 as UInteger
V_Var2 as String
End Type
Print "Add"
Dim TPtr as MyUDT Ptr
For X as UInteger = 1 to 5 '5 Einträge hinzufügen
TPtr = CAllocate(SizeOf(MyUDT)) 'Ein neues UDT erstellen
With *TPtr 'Daten im UDT bearbeiten
.V_Var1 = X
.V_Var2 = "Test_" & Str(X)
End With
TItem1 = List.Add(Cast(Any Ptr, TPtr)) 'Einen neuen UDT Eintrag hinzufügen
'Da die "Add" Funktion vielseitig gestalltet ist
'muss hier ein Cast() erfolgen um das UDT an den Any anzupassen.
Print " "; List.Count 'Anzahl Einträge ausgeben
Next
Print
Print
Print "Print"
For X as UInteger = 1 to List.Count 'Alle Einträge durchgehen
With *Cast(MyUDT Ptr, List.Item(X).AnyData) 'Eintrag mit Indexnummer X hohlen
'Wie schon beim Add muss hier auch ein Cast() erfolgen,
'um den Any Pointer wieder zu unserem MyUDT Pointer zu machen
Print " U:"; .V_Var1 'UInteger des UDT's ausgeben
Print " S:"; .V_Var2 'String des UDT's ausgeben
End With
Next
'Beim "LL_Destroy" Werden automatisch alle AnyPtr's DeAllocated. Sprich, Alle von hand erzeugenten Pointer (Allocate)
'werden automatisch DeAllocate'ed
Print
Print
Print "Destroy"
LL_Destroy(List) 'Die LinkedList zerstören
'DAS IST ZWINGEND EERFODERLICH!, da sonst Speicher-leaks auftreten!
If List.LLPtr <> 0 Then
Print "LISTE EXISTIERT NOCH!"
Else: Print "Liste erfolgreich zerstört!"
End If
'Nach dem zerstören ist die LinkedList leer! Wird anschliessend wieder ein Eintrag hinzugefügt (ADD), wird sie automatisch erstellt und MUSS!!!!!!!
'erneut "Destroy"'t werden!!!