Funktionreferenz


_ArrayInsert

Beschreibung anzeigen in

Fügt einen neuen String an der festgelegten Position in das 1D oder 2D Array ein

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

Parameter

$aArray Das Array, in dem ein Item eingefügt werden soll.
$vRange Die Position(en) wo die Items eingefügt werden sollen. Für das Format siehe Bemerkungen
$vValue [optional] hinzuzufügende Werte. Dies kann eine einzelne Variable, ein getrennter String oder ein 1D Array sein
$iStart [optional] Spalte wo mit dem einfügen begonnen werden soll (nur 2D Array)
$sDelim_Item [optional] verwendetes Trennzeichen wenn ein String in einzelne Items getrennt werden soll
$sDelim_Row [optional] verwendetes Trennzeichen wenn ein String in einzelne Zeilen getrennt werden soll (nur 2D Array)
$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)
Siehe Bemerkungen für mehr Details

Rückgabewert

Erfolg: die neue Größe des Arrays
Fehler: 0 und setzt das @error Flag auf ungleich null
@error: 1 - $aArray ist kein Array
2 - $aArray ist kein 1D oder 2D Array
3 - $vRange ungültig formatiert (ungültiges Zeichen oder ungeordnet)
4 - $vRange ist kein 1D Array oder hat nur 1 Element
5 - $vRange außerhalb der Arraygrenzen
6 - $iStart außerhalb der Arraygrenzen (nur 2D Array)
7 - $vValue ist kein 2D Array (nur 2D Array)
8 - $vValue hat zu viele Spalte um in $aArray zu passen

Bemerkungen

$vRange kann ein String sein, der die Zeilen enthält, über die eine Zeile eingefügt werden soll. Es kann eine einzelne Zahl oder ein Bereich sein, der durch die erste und die letzte Zeile gekennzeichnet ist, die durch einen Bindestrich (-) getrennt sind - mehrere Items werden durch ein Semikolon (;) getrennt.

$vRange kann auch ein 1D-Array sein, das die Zeilen enthält, über die eine Zeile mit dem die Anzahl im Array im Element [0] eingefügt werden soll.

In beiden Fällen müssen die Zeilen in aufsteigender Reihenfolge sein, können aber dupliziert werden.

Wenn $vValue ein getrennter String ist, werden alle Items in das Array als Strings eingefügt. Dies kann mit dem Parameter $hDataType überschrieben werden, der die Items in den erforderlichen Datentyp umwandelt. Es ist zu beachten, dass alle Items in dem getrennten String konvertiert werden. Wenn die Items von verschiedenen Datentypen sind, dann müssen sie als Array übergeben werden, damit sie ihren spezifischen Datentyp behalten.


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 (in $vValue enthalten)
    $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:
    Einzelnes Item - fügt 1 Zeile (in $vValue enthalten) in die 1. Spalte ein
    $sDelim_Item getrennter String - fügt 1 Zeile 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
    doppelt getrennter String - fügt so viele Zeilen hinzu ($sDelim_Row), fügt so viele Spalten hinzu ($sDelim_Item)
    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 hinzugefügte 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 Strings 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
- 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 Datentypen für die Items notwendig sind, so müssen diese als Array übergeben werden.
- Wenn $vValue ein Array ist, wird der Parameter ignoriert und die Arrayelemente werden unter Beibehaltung ihrer existierenden Datentypen hinzugefügt.

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

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

_ArrayAdd, _ArrayDelete, _ArrayPop, _ArrayPush

Beispiel

Beispiel 1

#include <Array.au3>

Local $aArray_Base[10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
_ArrayDisplay($aArray_Base, "1D - Original")

; Fügt ein einzelnes Item ein
Local $aArray = $aArray_Base
_ArrayInsert($aArray, 2, "Einfügen über 2")
_ArrayDisplay($aArray, "1D - Einzelnes Item")

; Fügt einen String mit einem Trennzeichen ein. Es wird als Bereich ein Array verwendet.
$aArray = $aArray_Base
Local $aRange[4] = [3, 3, 5, 9]
Local $sFill = "Einfügen über 3|Einfügen über 5|Einfügen über 9"
_ArrayInsert($aArray, $aRange, $sFill)
_ArrayDisplay($aArray, "1D - String mit einem Trennzeichen")

; Fügt ein 1D Array ein. Es wird als Bereich ein Array verwendet.
$aArray = $aArray_Base
Local $aFill[4] = ["Einfügen über 2", "Einfügen über 6.1", "Einfügen über 6.2", "Einfügen über 7"]
_ArrayInsert($aArray, "2;6;6;7", $aFill)
_ArrayDisplay($aArray, "1D - 1D Array")

; Fügt ein 1D Array ein. Es wird ein einzelnes Item verwendet.
$aArray = $aArray_Base
Local $aFill[4] = ["Einfügen 0", "Einfügen 1", "Einfügen 2", "Einfügen 3"]
_ArrayInsert($aArray, "2", $aFill, Default, Default, Default, $ARRAYFILL_FORCE_SINGLEITEM)
_ArrayDisplay($aArray, "1D - Einzelnes Item")
_ArrayDisplay(($aArray)[2], "Internes Array")

Beispiel 2

#include <Array.au3>

Local $aArray_Base[10][3]
For $i = 0 To 9
    For $j = 0 To 2
        $aArray_Base[$i][$j] = $i & " - " & $j
    Next
Next
_ArrayDisplay($aArray_Base, "2D - Original")

; Fügt ein einzelnes Item ein
Local $aArray = $aArray_Base
_ArrayInsert($aArray, 7, "Eingefügt über 7-0")
_ArrayDisplay($aArray, "2D - einzelnes Item")

; Fügt ein einzelnes Item in einer festgelegten Spalte hinzu
$aArray = $aArray_Base
_ArrayInsert($aArray, 3, "Eingefügt über 3-1", 1)
_ArrayDisplay($aArray, "2D - festgelegte Spalte")

; Fügt einen durch ein Trennzeichen getrennten String ein - einfügt als 1 Zeile - die anderen Zeilen werden mit " gefüllt
$aArray = $aArray_Base
Local $sFill = "Über 3-0|Über 3-1|Über 3-2"
_ArrayInsert($aArray, "3;5;9", $sFill)
_ArrayDisplay($aArray, "2D - Trennzeichen getrennter String")

; Fügt ein durch ein Zeilentrennzeichen getrennten String ein (Verwendung eines Bereichs eines Arrays) - einfügt als 3 Zeilen - die anderen Zeilen werden mit " gefüllt
$aArray = $aArray_Base
Local $aRange[4] = [3, 3, 5, 9]
$sFill = "Über 3-2" & @CRLF & "Über 5-2" & @CRLF & "Über 9-2"
_ArrayInsert($aArray, $aRange, $sFill, 2) ; Insert in column 2
_ArrayDisplay($aArray, "2D - Trennzeichen getrennter String")

; Fügt ein Item als ein Zeilentrennzeichen ein - eingefügt als 4 Zeilen
$aArray = $aArray_Base
$sFill = "Über 3-0|3-1|3-2" & @CRLF & "Über 5a|5-1a|5-2a" & @CRLF & "Über 5b|5-1b|5-2b" & @CRLF & "Über 9|9-1|9-2"
_ArrayInsert($aArray, "3;5;5;9", $sFill)
_ArrayDisplay($aArray, "2D - Trennzeichen getrennte Zreile bzw String")

; Fügt ein 2D Array hinzu
$aArray = $aArray_Base
Local $aFill_1D[3][3] = [["Über 2", "2-1", "2-2"], ["Über 3", "3-1", "3-2"], ["Über 4", "4-1", "4-2"]]
_ArrayInsert($aArray, "2-4", $aFill_1D)
_ArrayDisplay($aArray, "2D - 2D Array")

Beispiel 3

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

Local $aArray_Base[2][2] = [["Original Item 0 - 0", "Original Item 0 - 1"], ["Original Item 1 - 0", "Original Item 1 - 1"]]
Local $aArray
Local $sFill = 1 & @CRLF & 2 ; Es ist zu beachten, dass Variablen hier als Zahl-Datentyp hinzugefügt werden
MsgBox($MB_SYSTEMMODAL, "hinzuzufügender getrennter String", $sFill)

; Fügt Items durch einen durch Trennzeichen getrennten String hinzu
$aArray = $aArray_Base
 _ArrayInsert($aArray, "0;1", $sFill)
_ArrayDisplay($aArray, "In einen String umgewandelt")
; Wird jedoch beim Einfügen in einen String-Datentyp konvertiert
MsgBox($MB_SYSTEMMODAL, "Ergebnis", "Daten:" & @TAB & $aArray[2][0] & @CRLF & "Datentype:" & @TAB & VarGetType($aArray[2][0]))

; Fügt Items durch einen durch Trennzeichen getrennten String hinzu
$aArray = $aArray_Base
; Der Datentyp wird zum erforderlichen Typ gezwungen
Local $hDataType = Number
 _ArrayInsert($aArray, "0;1", $sFill, Default, Default, Default, $ARRAYFILL_FORCE_NUMBER)
_ArrayDisplay($aArray, "Forced to number")
; Der Datentyp wird zum erforderlichen Typ gezwungen
MsgBox($MB_SYSTEMMODAL, "Ergebnis", "Daten:" & @TAB & $aArray[2][0] & @CRLF & "Datentype:" & @TAB & VarGetType($aArray[2][0]))