Funktionreferenz


_ArrayAdd

Beschreibung anzeigen in

Fügt den angegeben Wert an dem Ende des angegebenen Arrays hinzu

#include <Array.au3>
_ArrayAdd ( ByRef $aArray, $vValue [, $iStart = 0 [, $sDelim_Item = "|" [, $sDelim_Row = @CRLF [, $iForce = $ARRAYFILL_FORCE_DEFAULT]]]] )

Parameter

$aArray Das zu verändernde Array.
$vValue Der Wert, der hinzugefügt werden soll. Dies kann ein einzelnes Item, ein String mit Trennzeichen oder ein Array sein
$iStart [optional] Spalte bei der die Addition beginnt (nur 2D Array)
$sDelim_Item [optional] verwendetes Trennzeichen, falls ein String in einzelne Items getrennt werden soll
$sDelim_Row [optional] verwendetes Trennzeichen, falls ein String in einzelne Zeilen getrennt werden soll (nur 2D)
$iForce [optional] Behält das Standardverhalten,
    $ARRAYFILL_FORCE_DEFAULT (0)
Erzwingt, dass $vValue als einzelnes Item hinzugefügt wird,
    $ARRAYFILL_FORCE_SINGLEITEM (1)
oder erzwingt den Datentyp für alle hinzugefügten Items
    $ARRAYFILL_FORCE_INT (2)
    $ARRAYFILL_FORCE_NUMBER (3)
    $ARRAYFILL_FORCE_PTR (4)
    $ARRAYFILL_FORCE_HWND (5)
    $ARRAYFILL_FORCE_STRING (6)
    $ARRAYFILL_FORCE_BOOLEAN (7)
Siehe Bemerkungen für mehr Details

Rückgabewert

Erfolg: der Index des letzten hinzugefügten Objekts
Fehler: -1 und setzt das @error Flag auf ungleich null
@error: 1 - $aArray ist kein Array
2 - $aArray ist kein 1D oder 2D Array
3 - $vValue hat zu viele Spalten die nicht in $aArray reinpassen
4 - $iStart außerhalb der Arraygrenzen (nur 2D)
5 - Anzahl der Array-Dimensionen für $aArray und $vValue passen nicht

Bemerkungen

Der Additionsmodus ist abhängig vom $vValue Typ. $iForce kann dies jedoch beeinflussen. Es gibt die folgenden Standardverhalten:

1D Arrays:
    Einzelnes Item - fügt 1 Element hinzu
    $sDelim_Item getrennter String - fügt so viele Elemente wie Items hinzu
    0-based 1D array - fügt so viele Elemente wie Items hinzu

2D Arrays:
    $sDelim_Item getrennter String - fügt 1 Zeilen hinzu. Die Spalten werden gefüllt, wenn genug Items vorhanden sind
    $sDelim_Row getrennter String - fügt so viele Zeile wie Items hinzu. Es wird nur 1 Spalte gefüllt
    $sDelim_Item & Row getrennter String - fügt Zeilen und Items hinzu, abhängig von den Trennstellen
    0-basierendes 2D Array - fügt so vielen Zeilen bzw. Spalten wie im Array hinzu

Ein leerer String ("") wird hinzufügt, wenn in $vValue unzureichend viele Items festgelegt wurden. Überflüssige Items werden ignoriert.

Wird der $iForce Parameter verwendet, so kann sich das Standardverhalten oder der Datentyp für hinzugeüfgt Items ändern. Dies kann wie folgt gesetzt werden:
    - $ARRAYFILL_FORCE_DEFAULT (Standard):
- Items werden wie oben beschrieben getrennt. Einzelne Items und Arrayelemente behalten ihren Datentyp. Getrennte String werden als Strings hinzufügt.
    - $ARRAYFILL_FORCE_SINGLEITEM:
- Wenn $aArray ein 1D-Array ist, so wird $vValue als einzelnes Elemenet hinzugefügt.
- Wenn $aArray ein 2D-Array ist, wird der Parameter ignoriert.
    - $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING, $ARRAYFILL_FORCE_BOOLEAN
- Wenn $vValue ein einzelnes Items ist, wird standardmäßig der definierte Datentyp verwendet. Standardmäßig wird dessen existierender Datentyp verwendet.
- Wenn $vValue ein getrennter String ist, wird standardmäßig der definierte Datentyp verwendet. Standardmäßig werden die als String dem Array hinzugefügt. Wenn verschiedene Datentyp für die Items notwendig sind, so müssen dies als Array übergeben werden.
- Wenn $vValue ein Array ist, wird der Parameter ignoriert und die Arrayelemente werden unter Beibehaltung ihrer existierenden Datentyp hinzugefügt.

Wenn $iForce auf einen anderen Wert gesetzt wurde, wird dieser ignoriert.

Es ist zu beachten, dass $ARRAYFILL_FORCE_BOOLEAN wörtliche Strings wie folgt betrachtet:
- "True" und "1" als True
- "False", "0" und "" (leerer String) als False

Diese Funktion ändert keine Zähler innerhalb des Arrays. Jedoch wird durch die Funktion, falls diese erfolgreich war, der neue höchste Zeilenindex des Array zurückgegeben.

Verwandte Funktionen

_ArrayConcatenate, _ArrayDelete, _ArrayInsert, _ArrayPop, _ArrayPush

Beispiel

Beispiel 1

#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $aArray_Base[2] = ["Original Item 0", "Original Item 1"]
_ArrayDisplay($aArray_Base, "1D - Basis Array")

; Fügt ein einzelnes Item hinzu
Local $aArray = $aArray_Base
Local $sSingleFill = "Neues Item 2"
_ArrayAdd($aArray, $sSingleFill)
_ArrayDisplay($aArray, "1D - Einzeln")

; Fügt einen String mit einem Trennzeichen ein. Jedes Item fügt ein neues Element hinzu
$aArray = $aArray_Base
Local $sFill = ""
For $i = 1 To 5
    $sFill &= "Neues Item " & $i + 1 & "|"
Next
$sFill = StringTrimRight($sFill, 1)
MsgBox($MB_SYSTEMMODAL, "String mit einem Trennzeichen zu hinzufügen", $sFill)
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "1D - String mit einem Trennzeichen")

; Fügt ein 1D Array hinzu. Jedes Item fügt ein neues Element hinzu
$aArray = $aArray_Base
Local $aFill[5]
For $i = 0 To 4
    $aFill[$i] = "Neues Item " & $i + 2
Next
_ArrayDisplay($aFill, "hinzuzufügendes Array")
_ArrayAdd($aArray, $aFill)
_ArrayDisplay($aArray, "1D - 1D Array")

Beispiel 2

#include <Array.au3>

Local $aArray, $sFill

Local $aArray_Base[2][2] = [["Item 0 - 0", "Item 0 - 1"], ["Item 1 - 0", "Item 1 - 1"]]
_ArrayDisplay($aArray_Base, "2D - Grundarray")

; Fügt einen durch ein Trennzeichen getrennten String hinzu
$aArray = $aArray_Base
$sFill = "Neues Item 2 - 0|Neues Item 2 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item getrennt")

; Fügt einen durch ein Zeilentrennzeichen getrennten String hinzu - eingetragen in Spalte 1
$aArray = $aArray_Base
$sFill = "Neues Item 2 - 1" & @CRLF & "Neues Item 3 - 1"
_ArrayAdd($aArray, $sFill, 1)
_ArrayDisplay($aArray, "2D - Zeile getrennt")

; Fügt ein Item und ein Zeilentrennzeichen getrennten String hinzu
$aArray = $aArray_Base
$sFill = "Neues Item 2 - 0|Neues Item 2 - 1" & @CRLF & "Neues Item 3 - 0|Neues Item 3 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item und Zeile getrennt")

; Fügt ein 2D Array hinzu
$aArray = $aArray_Base
Local $aFill[2][2] = [["Neues Item 2 - 1", "Neues Item 2 - 2"], ["Neues Item 3 - 1", "Neues Item 3 - 2"]]
_ArrayAdd($aArray, $aFill)
_ArrayDisplay($aArray, "2D - 2D Array")

; Fügt ein 2D Array hinzu - Einzelnes Item bzw. Spalte - eingetragen in Spalte 1
$aArray = $aArray_Base
Local $aFill[2][1] = [["Neues Item 2 - 1"], ["Neues Item 3 - 1"]]
_ArrayAdd($aArray, $aFill, 1)
_ArrayDisplay($aArray, "2D - 2D Array")

Beispiel 3

#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $aArray_Base[2] = ["Original Item 0", "Original Item 1"]
Local $aArray
Local $sFill = ""
For $i = 2 To 6
    $sFill &= $i & "|" ; Es ist zu beachten, dass Variablen hier als Zahl-Datentyp hinzugefügt werden
Next
$sFill = StringTrimRight($sFill, 1)
MsgBox($MB_SYSTEMMODAL, "Hinzuzufügender getrennter String", $sFill)

; Fügt Items durch einen getrennten String hinzu
$aArray = $aArray_Base
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "Umgeandelt in einen String")
; Wird jedoch beim Einfügen in einen String-Datentyp konvertiert
MsgBox($MB_SYSTEMMODAL, "Ergebnis", "Daten:" & @TAB & $aArray[6] & @CRLF & "Datentyp:" & @TAB & VarGetType($aArray[6]))

; Fügt Items durch einen getrennten String hinzu
$aArray = $aArray_Base
; Es wird der Datentyp Zahl erzwungen
_ArrayAdd($aArray, $sFill, Default, Default, Default, $ARRAYFILL_FORCE_NUMBER)
_ArrayDisplay($aArray, "Datentyp Zahl erzwungen")
; Der Datentyp wird zum erforderlichen Typ gezwungen
MsgBox($MB_SYSTEMMODAL, "Ergebnis", "Daten:" & @TAB & $aArray[6] & @CRLF & "typ:" & @TAB & VarGetType($aArray[6]))