- Offizieller Beitrag
Hi,
nachdem ich bereits zum Dictionary-Objekt als Array-Pendent eine Funktionssammlung erstellt hatte, habe ich mich nun darangesetzt und auch die anderen Arrayalternativen in eine Sammlung aufgenommen. Damit alles komplett ist, habe ich hier nochmal die Dictionary-Funktionen mit erfaßt.
Mein ausdrücklicher Dank gilt an dieser Stelle AspirinJunkie
Durch seine gute Vorarbeit hier hat er mich zum Einen inspiriert und zum Anderen die Arbeit spürbar erleichtert .
Ohne seinen Beitrag hätte ich mich wahrscheinlich nicht so schnell mit diesen Varianten befaßt.
Obwohl ich weitestgehend getestet habe, bin ich mir nicht ganz sicher ob noch Bugs versteckt sind ;-). Solltet ihr welche entdecken sagt mir bitte Bescheid.
Hier eine Auflistung aller Funktionen der Sammlung:
Alternative Array-Funktionen
============================= OBJEKT 'Scripting.Dictionary' =======================================
_ObjDictCreate(Modus)
Erzeugt ein Dictionary Objekt im Binär- (default) oder Textmodus
Gibt das Handle des Objektes zurück
_ObjDictAdd(Objekt, Schlüssel, Wert)
Fügt einem Dictionary Objekt ein Schlüssel-Wert Paar hinzu
_ObjDictGetValue(Objekt, Schlüssel)
Liest den Wert für einen Schlüssel aus
_ObjDictSetValue(Objekt, Schlüssel)
Setzt einen neuen Wert für einen Schlüssel
_ObjDictCount(Objekt)
Gibt die Anzahl der Schlüssel-Wert Paare zurück
_ObjDictSearch(Objekt, Schlüssel)
Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden
_ObjDictDeleteKey(Objekt, Schlüssel)
Löscht den angegebenen Schlüssel (und dessen Wert)
Wird statt eines Schlüsselnamens ein Leerstring übergeben,
werden alle Schlüssel gelöscht (Standard)
_ObjDictList(Objekt)
Eine GUI mit einem ListView zeigt alle Schlüssel-Wert Paare
_IniReadSectionToObjDict(Objekt, INI-Pfad, Sektion)
Liest die angegebene INI-Sektion in das Objekt
Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück
_IniWriteSectionFromObjDict(Objekt, INI-Pfad, Sektion)
Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Sektion
der INI-Datei
Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück
_FileReadToObjDict(Objekt, TextDatei-Pfad, Seperator)
Liest aus einer Textdatei alle Schlüssel-Wert Paare zeilenweise ein (1 Paar/Zeile)
Standard-Seperator ist '|', kann hier angepaßt werden
Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück
_FileWriteFromObjDict(Objekt, TextDatei-Pfad, Seperator, Overwrite)
Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Datei (1 Paar/Zeile).
Mit Overwrite='TRUE' (Standard) wird die angegebene Datei, falls sie bereits existiert,
überschrieben. Mit 'FALSE' wird an eine bestehende Datei angehängt.
Standard-Seperator ist '|', kann hier angepaßt werden.
Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück
===================================================================================================
_ObjGetType($Object)
Gibt die exakte Objektbezeichnung des verwendeten NET-Framework Objektes zurück
Alle folgenden Funktionen erfordern das NET-Framework.
======================== OBJEKT 'System.Collections.Hashtable' ====================================
_ObjHashCreate()
Erzeugt ein Hashtable Objekt
Gibt das Handle des Objektes zurück
_ObjHashAdd(Objekt, Schlüssel, Wert)
Fügt einem Hashtable Objekt ein Schlüssel-Wert Paar hinzu
_ObjHashGetValue(Objekt, Schlüssel)
Liest den Wert für einen Schlüssel aus
_ObjHashCount(Objekt)
Gibt die Anzahl der Schlüssel-Wert Paare zurück
_ObjHashSearch(Objekt, Schlüssel)
Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden
_ObjHashDeleteKey(Objekt, Schlüssel)
Löscht den angegebenen Schlüssel (und dessen Wert)
Wird statt eines Schlüsselnamens '' übergeben,
werden alle Schlüssel gelöscht (Standard)
=========================== OBJEKT 'System.Collections.ArrayList' =================================
_ObjAListCreate()
Erzeugt ein Arraylist-Objekt
_ObjAListAdd(Objekt, Wert)
Fügt einen Wert zum Arraylist-Objekt hinzu
_ObjAListAddColl(Objekt, Collektion, Trennzeichen)
Fügt ein 1D-Array oder durch Trennzeichen getrennten String dem Objekt hinzu
_ObjAListSort(Objekt, Richtung)
Sortiert alle Elemente des Objekts (Standard: aufsteigend)
_ObjAListToLine(Objekt, Trennzeichen)
Gibt einen String mit allen Elementen, getrennt durch Trennzeichen (Standard '|'), zurück
_ObjAListGetItem(Objekt, Index)
Gibt den Inhalt an der Indexposition zurück
_ObjAListDelByName(Objekt, Wert)
Löscht den ersten gefundenen Eintrag, der mit Wert übereinstimmt
_ObjAListDelByIndex(Objekt, Index)
Löscht den Eintrag am übergebenen Index
_ObjAListInsert(Objekt, Wert, Index)
Fügt einen Wert am gegebenen Index ein
_ObjAListCount(Objekt)
Gibt die Anzahl der Elemente im Objekt zurück
_ObjAListSearch(Objekt, Wert)
Gibt TRUE zurück, wenn Wert im Objekt enthalten, sonst FALSE
_ObjAListClear(Objekt)
Löscht alle Elemente aus der Arrayliste
_ObjAListAddRange(Objekt Arraylist, Objekt das hinzugefügt werden soll)
Fügt ein (gleichartiges) Objekt an die Arraylist an
_ObjAListToArray(Objekt)
Übergibt alle Elemente der Arraylist an ein 1D-Array
_ObjAListGetIndex(Objekt, Wert)
Gibt den Index des ersten gefundenen Eintrags zurück, der mit Wert übereinstimmt
_ObjAListGetRange(Objekt, Index, Anzahl)
Gibt ab Indexposition eine Anzahl Elemente als Objekt zurück
_ObjAListInsertRange(Objekt, EinfügeObjekt, Index)
Fügt an der Indexposition ein (gleichartiges) Objekt ein
_ObjAListLastIndexOf(Objekt, Wert, Von, Bis)
Gibt den nullbasierten Index des letzten Vorkommens eines Werts in der ArrayList bzw. in einem Abschnitt davon zurück.
_ObjAListRemoveRange(Objekt, Index, Anzahl)
Löscht eine Anzahl Elemente ab Indexposition
Wird keine Anzahl übergeben, werden ab Indexposition alle restlichen Elemente gelöscht
_ObjAListReverse(Objekt, Von, Bis)
Kehrt die Reihenfolge der Elemente im angegebenen Bereich um.
_ObjAListSetRange(Objekt, EinfügeObjekt, Index)
Kopiert die Elemente einer Auflistung (gleichartiges Objekt) über einen Bereich von Elementen in der ArrayList.
=========================== OBJEKT 'System.Collections.Queue' =====================================
_ObjQueueCreate()
Erzeugt ein Queue-Objekt
_ObjQueueAdd(Objekt, Wert)
Fügt einem Queue-Objekt einen Wert hinzu
_ObjQueueSearch(Objekt, Wert)
Prüft auf Vorkommen des Wertes im Queue
_ObjQueueGetFirst(Objekt)
Gibt das erste Element aus dem Queue zurück, es verbleibt im Queue
_ObjQueuePopFirst(Objekt)
Gibt das erste Element aus dem Queue zurück, UND löscht es aus dem Queue
_ObjQueueCount(Objekt)
Gibt die Anzahl der Elemente des Queue zurück
_ObjQueueToArray(Objekt)
Gibt ein 1D-Array mit den Elementen des Queue zurück
=========================== OBJEKT 'System.Collections.Stack' =====================================
_ObjStackCreate()
Erzeugt ein Stack-Objekt
_ObjStackAdd(Objekt, Wert)
Fügt einem Stack-Objekt einen Wert hinzu
_ObjStackSearch(Objekt, Wert)
Prüft auf Vorkommen des Wertes im Stack
_ObjStackGetFirst(Objekt)
Gibt das erste Element aus dem Stack zurück, es verbleibt im Stack
_ObjStackPopLast(Objekt)
Gibt das Letzte Element aus dem Stack zurück, UND löscht es aus dem Stack
_ObjStackCount(Objekt)
Gibt die Anzahl der Elemente des Stack zurück
_ObjStackToArray(Objekt)
Gibt ein 1D-Array mit den Elementen des Stack zurück
================================ SONSTIGE FUNKTIONEN ==============================================
_ArrayToList()
Konvertiert ein 1-Dimensionales Array in eine Liste, Queue oder Stack
oder ein 2-Dimensionales Array in eine Hash-Tabelle
_FileReadToList(Datei)
Liest die angegebene Datei in ein Arraylist-Objekt
_FileListToList(Pfad, Filter, Flag)
Listet alle Dateien und Ordner eines Pfades (arbeitet wie Dir mit dem Schalter /B)
===================================================================================================
Edit:
Ich habe für das Objekt ArrayList eine weitere Funktion erstellt - _ObjAListAddColl()
Damit lassen sich 1D-Arrays oder mit Delimiter getrennte Stringelemente der Arraylist hinzufügen.
Die Funktion ist noch nicht in die .au3 eingefügt, deshalb hier der Quelltext:
_ObjAListAddColl()
;==================================================================================================
; Name: _ObjAListAddColl($ObjList, $Coll, $Delim='|')
; Parameter: $ObjList - Handle des Arraylist-Objektes
; $Coll - 1D-Array od. mit $Delim getrennter String (Standard '|')
; optional $Delim - Trennzeichen bei Stringübergabe
; Return: Erfolg: 0
; Fehler: -1
; Fehlerwert: 1 Objekt existiert nicht
; 2 Array ist kein 1D-Array
; 3 Aktion fehlgeschlagen
;==================================================================================================
Func _ObjAListAddColl(ByRef $ObjList, $Coll, $Delim = '|')
If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
If IsArray($Coll) Then
If UBound($Coll, 0) > 1 Then Return SetError(2, 0, -1)
For $i = 0 To UBound($Coll) -1
$ObjList.Add($Coll[$i])
If @error Then Return SetError(3, 0, -1)
Next
Else
If Not StringInStr($Coll, $Delim) Then
$ObjList.Add($Coll)
If @error Then Return SetError(3, 0, -1)
Else
Local $aTmp = StringSplit($Coll, $Delim)
For $i = 1 To UBound($aTmp) -1
$ObjList.Add($aTmp[$i])
If @error Then Return SetError(3, 0, -1)
Next
EndIf
EndIf
Return 0
EndFunc ;==>_ObjAListAddColl