#include <StructureList.au3>

;	eine Structure-List erstellen
;	erstes Element MUSS Indexelement sein (eineindeutig, in gesamter List einmalig)
;	erster Parameter setzt die max. Länge von Stringelementen, mit "-1" = 128
Local $strucList = _StrucList_Create(-1, 'c;Artikel', 'i;ArtNr', 'i;Menge', 'f;EKNetto', 'f;VKNetto')


;	der List ein Element zufügen
If _StrucList_AddIndex($strucList, 'Schlagschrauber') Then _
ConsoleWrite('Schlagschrauber zugefügt' & @CRLF & @CRLF)


;	die Werte für das Element einzeln hinzufügen
If _StrucList_SetValue($strucList, 'Schlagschrauber', 'ArtNr', 102030) Then _
ConsoleWrite('Schlagschrauber, Detail: ArtNr zugefügt' & @CRLF)

If _StrucList_SetValue($strucList, 'Schlagschrauber', 'Menge', 25) Then _
ConsoleWrite('Schlagschrauber, Detail: Menge zugefügt' & @CRLF)

If _StrucList_SetValue($strucList, 'Schlagschrauber', 'EKNetto', 35.05) Then _
ConsoleWrite('Schlagschrauber, Detail: EKNetto zugefügt' & @CRLF)

If _StrucList_SetValue($strucList, 'Schlagschrauber', 'VKNetto', 49.50) Then _
ConsoleWrite('Schlagschrauber, Detail: VKNetto zugefügt' & @CRLF & @CRLF)


;	ein weiteres Element zufügen
If _StrucList_AddIndex($strucList, 'Kettensäge') Then _
ConsoleWrite('Kettensäge zugefügt' & @CRLF & @CRLF)


;	ein neues Element inklusive Daten zufügen (z.B. aus Datei ausgelesen)
Local $ValuesToSet = "Turboflex|107090|41|75.05|95.40"
If _StrucList_AddIndex($strucList, -1, $ValuesToSet) Then _
ConsoleWrite('Turboflex hinzugefügt, inklusive aller Details' & @CRLF & @CRLF)


;	die Werte in einem String übergeben !! Reihenfolge identisch, wie in der Struktur, ohne Indexelement
$ValuesToSet = "104050|17|188.45|225.30"
If _StrucList_SetValue($strucList, 'Kettensäge', -1, $ValuesToSet, Default) Then _
ConsoleWrite('Kettensäge, alle Details hinzugefügt' & @CRLF & @CRLF)


;	Werte für ein Element abfragen
ConsoleWrite('Schlagschrauber, ArtNr: ' & _
_StrucList_GetValue($strucList, 'Schlagschrauber', 'ArtNr') & @CRLF)

ConsoleWrite('Schlagschrauber, Menge: ' & _
_StrucList_GetValue($strucList, 'Schlagschrauber', 'Menge') & @CRLF)

ConsoleWrite('Schlagschrauber, EKNetto: ' & _
_StrucList_GetValue($strucList, 'Schlagschrauber', 'EKNetto') & @CRLF)

ConsoleWrite('Schlagschrauber, VKNetto: ' & _
_StrucList_GetValue($strucList, 'Schlagschrauber', 'VKNetto') & @CRLF & @CRLF)


;	alle Werte eines Elements gemeinsam zurückgeben

;	- als trennzeichenbasierter String
ConsoleWrite('Schlagschrauber, Details als String: ' & @CRLF & @TAB & _
_StrucList_GetValue($strucList, 'Schlagschrauber', 0 , Default) & @CRLF & @CRLF)

ConsoleWrite('Turboflex, Details als String: ' & @CRLF & @TAB & _
_StrucList_GetValue($strucList, 'Turboflex', 0, Default) & @CRLF & @CRLF)

;	- als Array
Local $aRet = _StrucList_GetValue($strucList, 'Kettensäge', 0, 'A')
ConsoleWrite('Kettensäge, Details als Array:' & @CRLF)
For $i = 0 To UBound($aRet) - 1
	ConsoleWrite(@TAB & 'Array[' & $i & ']: ' & $aRet[$i] & @CRLF)
Next
ConsoleWrite(@CRLF)


;	Anzahl Elemente ausgeben
ConsoleWrite('Anzahl Elemente = ' & _
_StrucList_Count($strucList) & @CRLF & @CRLF)


;	alle Index-Elemente ausgeben

;	- als trennzeichenbasierter String
ConsoleWrite('Alle Index-Elemente als String: ' & @CRLF & @TAB & _
_StrucList_GetIndices($strucList, ';') & @CRLF)

;	- als Array
Local $aRet = _StrucList_GetIndices($strucList, 'A')
ConsoleWrite('Alle Index-Elemente als Array:' & @CRLF)
For $i = 0 To UBound($aRet) - 1
	ConsoleWrite(@TAB & 'Array[' & $i & ']: ' & $aRet[$i] & @CRLF)
Next
ConsoleWrite(@CRLF)


;	ein Element löschen
ConsoleWrite('Anzahl Elemente vor Löschen: ' & _
_StrucList_Count($strucList) & @CRLF)
If _StrucList_Delete($strucList, 'Schlagschrauber') Then
	ConsoleWrite(@TAB & 'Element Schlagschrauber gelöscht' & @CRLF)
	ConsoleWrite('Anzahl Elemente nach Löschen: ' & _
	_StrucList_Count($strucList) & @CRLF & @CRLF)
Else
	ConsoleWrite(@TAB & 'Löschen fehlgeschlagen.' & @CRLF & @CRLF)
EndIf


;	auf Existenz eines Elements (IndexWert) prüfen
ConsoleWrite('Element Kettensäge vorhanden?' & @TAB & _
_StrucList_SearchIndex($strucList, 'Kettensäge') & @CRLF & @CRLF)

; === Liste in Datei speichern
_StrucList_WriteToFile($strucList, @ScriptDir & '\StrucList.txt')

; === aus Datei neu laden
$strucList2 = _StrucList_CreateFromFile(@ScriptDir & '\StrucList.txt')
; === Indexwerte der gelesenen Liste
ConsoleWrite('index values read from file: ' & _StrucList_GetIndices($strucList, Default) & @CRLF & @CRLF)
