ScriptForge.Array-Service (SF_Array)

Inhalte
Index 🔎︎

# ScriptForge.Array -Service

Stellt eine Sammlung von Methoden zum Bearbeiten und Transformieren von Matrizen mit einer Dimension (Vektoren) und mit zwei Dimensionen bereit. Dazu gehören Set-Operationen, Sortieren, Importieren in und Exportieren aus Textdateien.

Matrizen mit mehr als zwei Dimensionen können mit den Methoden in diesem Dienst nicht verwendet werden, die einzige Ausnahme ist die Methode CountDims, die Matrizen mit einer beliebigen Anzahl von Dimensionen akzeptiert.

Matrizen-Elemente können jede Art von Wert enthalten, einschließlich (Unter-)Matrizen.

## Aufruf des Dienstes

Vor der Verwendung des Dienstes Array muss die Bibliothek ScriptForge geladen werden mit:

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")

Durch das Laden der Bibliothek wird das Objekt SF_Array erstellt, das verwendet werden kann, um die Methoden im Dienst Array aufzurufen.

Die folgenden Codeschnipsel zeigen die verschiedenen Methoden zum Aufrufen von Methoden im Dienst Array (als Beispiel wird die Methode Append verwendet):

          SF_Array.Append(...)

          Dim arr    :    arr = SF_Array
          arr.Append(...)

          Dim arr    :    arr = CreateScriptService("Array")
          arr.Append(...)

Die Methode CreateScriptService ist nur verfügbar, nachdem Sie die Bibliothek ScriptForge geladen haben.

Methoden
Append AppendColumn AppendRow Contains ConvertToDictionary CountDims Difference ExportToTextFile ExtractColumn ExtractRow | Flatten ImportFromCSVFile IndexOf Insert InsertSorted Intersection Join2D Prepend PrependColumn PrependRow | RangeInit Reverse Shuffle Slice Sort SortColumns SortRows Transpose TrimArray Union Unique

Das erste Argument der meisten Methoden ist das zu betrachtende Matrixobjekt. Es wird immer als Referenz übergeben und unverändert gelassen. Methoden wie „Append“, „Prepend“ und so weiter geben nach ihrer Ausführung ein neues Matrixobjekt zurück.

## Append

Hängt die als Argumente aufgelisteten Elemente an das Ende der Eingabematrix an.

### Syntax:

          SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parameter:

Array_1D: das bereits vorhandene Array, kann leer sein.

arg0, …: eine Liste von Elementen, die an Array_1D angehängt werden sollen.

### Beispiel:

          Sub Example_Append()
          Dim a As Variant
              a = SF_Array.Append(Array(1, 2, 3), 4, 5)
                  ' (1, 2, 3, 4, 5)
          End Sub

## AppendColumn

Hängt eine neue Spalte an der rechten Seite einer zweidimensionalen Matrix an. Die resultierende Matrix hat die gleichen unteren Grenzen wie die anfängliche zweidimensionale Matrix.

### Syntax:

          SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant

### Parameter:

Array_2D: die bereits vorhandene Matrix, kann leer sein. Wenn diese Matrix nur eine Dimension hat, wird sie als erste Spalte der resultierenden zweidimensionalen Matrix betrachtet.

New_Column: eine eindimensionale Matrix mit so vielen Elementen wie es Zeilen in Array_2D gibt.

### Beispiel:

          Sub Example_AppendColumn()
          Dim a As Variant, b As variant
              a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((1, 4), (2, 5), (3, 6))
              b = SF_Array.AppendColumn(a, Array(7, 8, 9))
                  ' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
              c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
          End Sub

## AppendRow

Fügt am Ende einer zweidimensionalen Matrix eine neue Zeile hinzu. Die resultierende Matrix hat die gleichen unteren Grenzen wie die anfängliche zweidimensionale Matrix.

### Syntax:

          SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant

### Parameter:

Array_2D: die bereits vorhandene Matrix, kann leer sein. Wenn diese Matrix eine Dimension hat, wird sie als die erste Zeile der resultierenden 2-dimensionalen Matrix betrachtet.

Row: Eine eindimensionale Matrix mit so vielen Elementen wie Spalten in Array_2D vorhanden sind.

### Beispiel:

          Sub Example_AppendRow()
          Dim a As Variant, b As variant
              a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
                  '  ((1, 2, 3), (4, 5, 6))
              b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
          End Sub

## Contains

Überprüft, ob eine eindimensionale Matrix eine bestimmte Zahl, einen bestimmten Text oder ein bestimmtes Datum enthält. Beim Textvergleich kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.
Sortierte Eingabematrizen müssen homogen gefüllt werden, das heißt alle Elemente müssen Skalare desselben Typs sein (Elemente vom Typ Empty und Null sind verboten).
Das Ergebnis der Methode ist unvorhersehbar, wenn die Matrix als sortiert angekündigt wird und es in Wirklichkeit nicht ist.
Eine binäre Suche wird durchgeführt, wenn die Matrix sortiert ist, andernfalls wird es einfach von oben nach unten durchsucht und die Elemente vom Typ Empty und Null werden ignoriert.

### Syntax:

          SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean

### Parameter:

Array_1D: die zu surchsuchende Matrix.

ToFind: eine Zahl, ein Datum oder eine Zeichenfolge, die/das gesucht werden soll.

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

SortOrder: "ASC", "DESC" oder "" (= nicht sortiert, Standard)

### Beispiel:

          Sub Example_Contains()
          Dim a As Variant
              a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
              SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False
          End Sub

## ConvertToDictionary

Speichern Sie den Inhalt einer 2-Spalten-Matrix in einem Objekt ScriptForge.Dictionary.
Der Schlüssel wird aus der ersten Spalte extrahiert, der Eintrag aus der zweiten.

### Syntax:

          SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant

### Parameter:

Array_1D: Die erste Spalte darf ausschließlich Zeichenfolgen mit einer Länge > 0 enthalten, in beliebiger Reihenfolge.

### Beispiel:

          Sub Example_ConvertToDictionary()
          Dim a As Variant, b As Variant
              a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
              b = SF_Array.ConvertToDictionary(a)
              MsgBox b.Item("c") ' 3
          End Sub

## CountDims

Zählt die Anzahl der Dimensionen einer Matrix. Das Ergebnis kann größer als zwei sein.
Wenn das Argument keine Matrix ist, wird -1 zurückgegeben.
Wenn die Matrix nicht initialisiert ist, wird 0 zurückgegeben.

### Syntax:

          SF_Array.CountDims(Array_ND As Variant) As Integer

### Parameter:

Array_ND: die zu untersuchende Matrix.

### Beispiel:

          Sub Example_CountDims()
          Dim a(1 To 10, -3 To 12, 5)
              MsgBox SF_Array.CountDims(a) ' 3
          End Sub

## Difference

Erstellt eine Menge als nullbasierte Matrix, indem Sie den Differenzoperator auf die beiden Eingabematrizen anwenden. Resultierende Elemente stammen aus der ersten Matrix und nicht aus dem zweiten.
Die resultierende Matrix wird in aufsteigender Reihenfolge sortiert.
Beide Eingabematrizen müssen homogen gefüllt sein, ihre Einträge müssen Skalare vom gleichen Typ sein. Elemente vom Typ Empty und Null sind verboten.
Bei Textvergleichen kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.

### Syntax:

          SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parameter:

Array1_1D: Eine eindimensionale Referenzmatrix, deren Elemente auf ihre Entfernung untersucht werden.

Array2_1D: Eine eindimensionale Matrix, deren Elemente von der ersten Eingabematrix subtrahiert werden.

CaseSensitive: Nur wenn die Matrizen mit Zeichenfolgen gefüllt sind, Standard = False.

### Beispiel:

          Sub Example_Difference()
          Dim a As Variant
              a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("A", "B")
          End Sub

## ExportToTextFile

Schreibt alle Elemente der Matrix nacheinander in eine Textdatei. Existiert die Datei bereits, wird sie ohne Warnung überschrieben.

### Syntax:

          SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean

### Parameter:

Array_1D: Die zu exportierende Matrix. Sie darf nur Zeichenfolgen enthalten.

FileName: der Name der Textdatei, die die Daten enthält. Der Name wird so ausgedrückt, wie er von der aktuellen Eigenschaft FileNaming des Dienstes SF_FileSystem angegeben wird. Standard = any (sowohl das URL-Format als auch das native Betriebssystemformat werden zugelassen).

Kodierung: Der zu verwendende Zeichensatz. Verwenden Sie einen der unter IANA-Zeichensätze aufgelisteten Namen. Beachten Sie, dass LibreOffice möglicherweise nicht alle vorhandenen Zeichensätze implementiert. Standard ist "UTF-8".

### Beispiel:

          Sub Example_ExportToTextFile()
              SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
          End Sub

## ExtractColumn

Extrahiert aus einer zweidimensionalen Matrix eine bestimmte Spalte als neue Matrix.
Seine untere Grenze LBound und obere Grenze UBound sind identisch mit denen der ersten Dimension der Eingabematrix.

### Syntax:

          SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant

### Parameter:

Array_2D: Die Matrix, aus dem extrahiert werden soll.

ColumnIndex: Die zu extrahierende Spaltennummer – muss im Intervall [LBound, UBound] liegen.

### Beispiel:

          Sub Example_ExtractColumn
             ' Erzeugt eine 3x3-Matrix: |1, 2, 3|
             '                      |4, 5, 6|
             '                      |7, 8, 9|
             Dim mat as Variant, col as Variant
             mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
             mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
             mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
             ' Extrahiert die dritte Spalte: |3, 6, 9|
             col = SF_Array.ExtractColumn(mat, 2)
          End Sub

## ExtractRow

Extrahieren Sie aus einer zweidimensionalen Matrix eine bestimmte Zeile als neue Matrix.
Ihre untere LBound und obere Grenze UBound sind identisch mit denen der zweiten Dimension der Eingabematrix.

### Syntax:

          SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant

### Parameter:

Array_2D: Die Matrix, aus dem extrahiert werden soll.

RowIndex: Die zu extrahierende Zeilennummer – muss im Intervall [LBound, UBound] liegen.

### Beispiel:

          Sub Example_ExtractRow
             ' Erzeugt eine 3x3-Matrix: |1, 2, 3|
             '                      |4, 5, 6|
             '                      |7, 8, 9|
             Dim mat as Variant, row as Variant
             mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
             mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
             mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
             ' Extrahiert die erste Zeile: |1, 2, 3|
             row = SF_Array.ExtractRow(mat, 0)
          End Sub

## Flatten

Stapelt alle einzelnen Elemente einer Matrix und alle Elemente in seiner Teilmatrix zu einer neuen Matrix ohne Teilmatrizen. Leere Teilmatrizen werden ignoriert und Teilmatrizen mit einer Anzahl von Dimensionen größer als eins werden nicht abgeflacht.

### Syntax:

          SF_Array.Flatten(Array_1D As Variant) As Variant

### Parameter:

Array_1D: die bereits vorhandene Matrix, kann leer sein.

### Beispiel:

          Sub Example_Flatten()
          Dim a As Variant
              a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
                  ' (1, 2, 3, 4, 5)
          End Sub

Sie können die Methode Flatten zusammen mit anderen Methoden wie Append oder Prepend verwenden, um einen Satz von eindimensionalen Matrizen zu einer einzigen eindimensionalen Matrix zu verketten.

### Beispiel:

Als nächstes sehen Sie ein Beispiel dafür, wie die Methoden Flatten und Append kombiniert werden können, um drei Matrizen zu verketten.

          Sub Concatenate_Example
             ' Erzeugt drei Matrizen für dieses Beispiel
             Dim a as Variant, b as Variant, c as Variant
             a = Array(1, 2, 3)
             b = Array(4, 5)
             c = Array(6, 7, 8, 9)
             ' Verkettet die drei Matrizen zu einer einzigen eindimensionalen Matrix
             Dim arr as Variant
             arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
             '(1, 2, 3, 4, 5, 6, 7, 8, 9)
          End Sub

## ImportFromCSVFile

Importiert die Daten, die in einer Datei mit kommagetrennten Werten (CSV) enthalten sind. Das Komma kann durch ein beliebiges Zeichen ersetzt werden.

Das anwendbare CSV-Format wird unter IETF Common Format and MIME Type for CSV Files beschrieben.

Jede Zeile in der Datei enthält einen vollständigen Datensatz (Zeilenaufteilung ist nicht zulässig).
Sequenzen wie \n, \t, … bleiben jedoch unverändert. Verwenden Sie die Methode SF_String.Unescape(), um sie zu verwalten.

Die Methode gibt eine zweidimensionale Matrix zurück, deren Zeilen einem einzelnen Datensatz entsprechen, der in der Datei gelesen wurde, und dessen Spalten einem Feld des Datensatzes entsprechen. Die Kohärenz der Feldtypen über die Spalten hinweg wird nicht überprüft. Es wird eine bestmögliche Schätzung gemacht, um numerische und Datumstypen zu identifizieren.

Wenn eine Zeile weniger oder mehr Felder enthält als die erste Zeile in der Datei, wird eine Ausnahme ausgelöst. Leerzeilen werden jedoch einfach ignoriert. Wenn die Größe der Datei die Anzahl der Elemente überschreitet (siehe im Code), wird eine Warnung ausgegeben und die Matrix wird abgeschnitten.

### Syntax:

          SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant

### Parameter:

FileName: der Name der Textdatei, welche die Daten enthält. Der Name wird so ausgedrückt, wie er von der aktuellen Eigenschaft FileNaming des Dienstes SF_FileSystem angegeben wird. Standard = „any“ (sowohl das URL-Format als auch das native Betriebssystemformat werden zugelassen).

Delimiter: Ein einzelnes Zeichen, normalerweise ein Komma, ein Semikolon oder ein Tabulator-Zeichen. Standard = ",".

DateFormat: Ein spezieller Mechanismus behandelt Daten, wenn DateFormat entweder "YYYY-MM-DD", "DD-MM-YYYY" oder "MM-DD-YYYY" ist. Der Bindestrich (-) kann durch einen Punkt (.), einen Schrägstrich (/) oder ein Leerzeichen ersetzt werden. Andere Datumsformate werden ignoriert. Datumsangaben, die standardmäßig "" sind, werden als normaler Text betrachtet.

### Beispiel:

Gegebene sei diese CSV-Datei:

          Name,DateOfBirth,Address,City
          Anna,2002/03/31,"Rue de l'église, 21",Toulouse
          Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

          Sub Example_ImportFromCSVFile()
          Dim a As Variant
              a = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
              MsgBox a(0, 3)    ' City
              MsgBox TypeName(a(1, 2))    ' Date
              MsgBox a(2, 2)    ' Rue Albert Einstein, 113A
          End Sub

## IndexOf

Sucht in einer eindimensionalen Matrix nach einer Zahl, einer Zeichenfolge oder einem Datum. Beim Textvergleich kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.
Wenn die Matrix sortiert ist, muss sie homogen gefüllt sein, was bedeutet, dass alle Elemente Skalare desselben Typs sein müssen (Elemente vom Typ Empty und Null sind verboten).
Das Ergebnis der Methode ist unvorhersehbar, wenn die Matrix als sortiert angekündigt wird und es tatsächlich nicht ist.
Eine binäre Suche wird in sortierten Matrizen durchgeführt. Andernfalls werden Matrizen einfach von oben nach unten durchsucht und Elemente vom Typ Empty und Null werden ignoriert.
Die Methode gibt LBound(input array) – 1 zurück, wenn die Suche nicht erfolgreich war.

### Syntax:

          SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long

### Parameter:

Array_1D: die zu durchsuchende Matrix.

ToFind: eine Zahl, ein Datum oder eine Zeichenfolge, die gesucht werden soll.

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

SortOrder: "ASC", "DESC" oder "" (= nicht sortiert, Standard)

### Beispiel:

          Sub Example_IndexOf()
              MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
              MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1
          End Sub

## Insert

Fügt vor einem bestimmten Index der Eingabematrizen die als Argumente aufgelisteten Elemente ein.
Argumente werden blind eingefügt. Jedes von ihnen kann entweder ein Skalar eines beliebigen Typs oder eine Teilmatrix sein.

### Syntax:

          SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parameter:

Array_1D: die bereits vorhandene Matrize, kann leer sein.

Before: der Index, vor dem eingefügt werden soll; muss im Intervall [LBound, UBound + 1] liegen.

arg0, …: eine Liste von Elementen, die in Array_1D eingefügt werden sollen.

### Beispiel:

          Sub Example_Insert()
          Dim a As Variant
              a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
                  ' (1, 2, "a", "b", 3)
          End Sub

## InsertSorted

Fügt in einer sortierten Matrix ein neues Element an seiner Stelle ein.
Die Matrix muss homogen gefüllt sein, das heißt alle Einträge müssen Skalare desselben Typs sein.
Elemente vom Typ Empty und Null sind verboten.

### Syntax:

          SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parameter:

Array_1D: Die zu sortierende Matrix.

Item: Der einzufügende Skalarwert vom selben Typ wie die vorhandenen Matrixelemente.

SortOrder: "ASC" (Standard) oder "DESC".

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

### Beispiel:

          Sub Example_InsertSorted()
          Dim a As Variant
              a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
                  ' ("A", "B", "C", "a", "b")
          End Sub

## Intersection

Erstellt eine Menge als nullbasierter Matrizen, indem der Schnittmengenoperator auf die beiden Eingabematrizen angewendet wird. Ergebniselemente sind in beiden Matrizen enthalten.
Die resultierende Matrix wird in aufsteigender Reihenfolge sortiert.
Beide Eingabematrizen müssen homogen gefüllt sein, das heißt alle Einträge müssen Skalare vom gleichen Typ sein. Elemente vom Typ Empty und Null sind verboten.
Bei Textvergleichen kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.

### Syntax:

          SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parameter:

Array1_1D: Die erste Eingabematrix.

Array2_1D: Die zweite Eingabematrix.

CaseSensitive: Gilt für Matrizen, die mit Textelementen gefüllt sind, Standard = False.

### Beispiel:

          Sub Example_Intersection()
          Dim a As Variant
              a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("C", "b")
          End Sub

## Join2D

Verbindet eine zweidimensionale Matrix mit zwei Trennzeichen, eines für die Spalten, eines für die Zeilen.

### Syntax:

          SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String

### Parameter:

Array_2D: Jedes Element muss entweder Text, eine Zahl, ein Datum oder ein boolescher Wert sein.
Datumsangaben werden in das Format JJJJ-MM-TT hh:mm:ss umgewandelt.
Ungültige Elemente werden durch eine Zeichenfolge der Länge Null ersetzt.

ColumnDelimiter: Trennt jede Spalte (Standard = Tab/Chr(9)).

RowDelimiter: begrenzt jede Zeile (Standard = LineFeed/Chr(10))

Quote: Wenn True, werden Zeichenfolgen von doppelten Anführungszeichen eingeschlossen. Der Standardwert ist False.

### Beispiel:

          Sub Example_Join2D()
          -                     | 1, 2, "A", [2020-02-29], 5      |
          -    SF_Array.Join_2D(| 6, 7, "this is a string", 9, 10 |, ",", "/")
          -            ' "1,2,A,2020-02-29 00:00:00,5/6,7,this is a string,9,10"
          End Sub

## Prepend

Stellt am Anfang der Eingabematrix die als Argumente aufgelisteten Elemente voran.

### Syntax:

          SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parameter:

Array_1D: die bereits vorhandene Matrix, kann leer sein.

arg0, …: eine Liste von Elementen, die Array_1D vorangestellt werden sollen.

### Beispiel:

          Sub Example_Prepend()
          Dim a As Variant
              a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
                  ' (4, 5, 1, 2, 3)
          End Sub

## PrependColumn

Stellt der linken Seite einer zweidimensionalen Matrix eine neue Spalte voran. Die resultierende Matrix hat die gleichen unteren Grenzen wie die anfängliche zweidimensionale Matrix.

### Syntax:

          SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant

### Parameter:

Array_2D: Die bereits vorhandene Matrix, kann leer sein. Wenn diese Matrix eine Dimension hat, wird sie als letzte Spalte der resultierenden zweidimensionalen Matrix betrachtet.

Spalte: eine eindimensionale Matrix mit so vielen Elementen wie Zeilen in Array_2D vorhanden sind.

### Beispiel:

          Sub Example_PrependColumn()
          Dim a As Variant, b As variant
              a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((4, 1), (5, 2), (6, 3))
              b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
          End Sub

## PrependRow

Stellt am Anfang einer zweidimensionalen Matrix eine neue Zeile voran. Die resultierende Matrix hat die gleichen unteren Grenzen wie die anfängliche zweidimensionale Matrix.

### Syntax:

          SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant

### Parameter:

Array_2D: Die bereits vorhandene Matrix, kann leer sein. Wenn diese Matrix eine Dimension hat, wird sie als die letzte Zeile der resultierenden zweidimensionalen Matrix betrachtet.

Row: Eine eindimensionale Matrix, die so viele Elemente enthält, wie es Zeilen in Array_2D gibt.

### Beispiel:

          Sub Example_PrependRow()
          Dim a As Variant, b As variant
              a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((4, 5, 6), (1, 2, 3))
              b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
          End Sub

## RangeInit

Initialisiert eine neue nullbasierte Matrix mit numerischen Werten.

### Syntax:

          SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant

### Parameter:

From: Wert des ersten Elements.

UpTo: Das letzte Element sollte UpTo nicht überschreiten.

ByStep: Die Differenz zwischen zwei aufeinanderfolgenden Elementen (Standard = 1).

### Beispiel:

          Sub Example_RangeInit()
          Dim a As Variant
              a = SF_Array.RangeInit(10, 1, -1)
                  ' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
          End Sub

## Reverse

Gibt die umgekehrte eindimensionale Eingabematrix zurück.

### Syntax:

          SF_Array.Reverse(Array_1D As Variant) As Variant

### Parameter:

Array_1D: Die umzukehrende Matrix.

### Beispiel:

          Sub Example_Reverse()
          Dim a As Variant
              a = SF_Array.Reverse(Array("a", 2, 3, 4))
                  ' (4, 3, 2, "a")
          End Sub

## Shuffle

Gibt eine zufällige Permutation einer eindimensionalen Matrix zurück.

### Syntax:

          SF_Array.Shuffle(Array_1D As Variant) As Variant

### Parameter:

Array_1D: Die zu mischende Matrix.

### Beispiel:

          Sub Example_Shuffle()
          Dim a As Variant
              a = SF_Array.Shuffle(Array(1, 2, 3, 4))
                  ' Unberechenbar
          End Sub

## Slice

Gibt eine Teilmenge einer eindimensionale Matrix zurück.

### Syntax:

          SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant

### Parameter:

Array_1D: Die zu teilende Matrix.

From: Der untere Index in Array_1D, der zu extrahierenden Teilmatrix (From eingeschlossen)

UpTo: Der obere Index in Array_1D, der zu extrahierenden Teilmatrix (UpTo eingeschlossen). Standard = "upper bound" von Array_1D. Wenn UpTo < From, dann ist die zurückgegebene Matrix leer.

### Beispiel:

          Sub Example_Slice()
          Dim a As Variant
              a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
          End Sub

## Sort

Sortiert eine eindimensionales Matrix in aufsteigender oder absteigender Reihenfolge. Bei Textvergleichen kann die Groß-/Kleinschreibung beachtet werden oder nicht.
Die Matrix muss homogen gefüllt sein, das heißt die Einträge müssen Skalare desselben Typs sein.
Elemente vom Typ Empty und Null sind erlaubt. Üblicherweise ist Empty < Null < jeder andere skalare Wert.

### Syntax:

          SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parameter:

Array_1D: Die zu sortierende Matrix.

SortOrder: "ASC" (Standard) oder "DESC".

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

### Beispiel:

          Sub Example_Sort()
          Dim a As Variant
              a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
                  ' ("A", "B", "C", "a", "b")
          End Sub

## SortColumns

Gibt eine Permutation der Spalten einer zweidimensionalen Matrix zurück, sortiert nach den Werten einer gegebenen Zeile.
Die Zeile muss homogen gefüllt sein, das heißt alle Einträge müssen Skalare vom gleichen Typ sein.
Elemente vom Typ Empty und Null sind erlaubt. Üblicherweise ist Empty < Null < jeder andere skalare Wert.

### Syntax:

          SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parameter:

Array_1D: Die zu sortierende Matrix.

RowIndex: Der Index der Zeile, nach der die Spalten sortiert werden sollen.

SortOrder: "ASC" (Standard) oder "DESC".

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

### Beispiel:

          Sub Example_SortColumns()
          -                         | 5, 7, 3 |            ' | 7, 5, 3 |
          -    SF_Array.SortColumns(| 1, 9, 5 |, 2, "ASC") ' | 9, 1, 5 |
          -                         | 6, 1, 8 |            ' | 1, 6, 8 |
          End Sub

## SortRows

Gibt eine Permutation der Zeilen einer zweidimensionalen Matrix zurück, sortiert nach den Werten einer bestimmten Spalte.
Die Spalte muss homogen gefüllt sein, daher müssen alle Einträge Skalare vom gleichen Typ sein.
Elemente vom Typ Empty und Null sind erlaubt. Üblicherweise ist Empty < Null < jeder andere skalare Wert.

### Syntax:

          SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parameter:

Array_1D : Die zu sortierende Matrix.

RowIndex: Der Index der Spalte, nach der die Zeilen sortiert werden sollen.

SortOrder: "ASC" (Standard) oder "DESC".

CaseSensitive: Nur für Zeichenfolgenvergleiche, Standard = False.

### Beispiel:

          Sub Example_SortRows()
          -                      | 5, 7, 3 |            ' | 1, 9, 5 |
          -    SF_Array.SortRows(| 1, 9, 5 |, 2, "ASC") ' | 5, 7, 3 |
          -                      | 6, 1, 8 |            ' | 6, 1, 8 |
          End Sub

## Transpose

Vertauscht Zeilen und Spalten in einer zweidimensionalen Matrix.

### Syntax:

          SF_Array.Transpose(Array_2D As Variant) As Variant

### Parameter:

Array_2D: Die zu transponierende Matrix.

### Beispiel:

          Sub Example_Transpose()
          -                       | 1, 2 |  ' | 1, 3, 5 |
          -    SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
          -                       | 5, 6 |
          End Sub

## TrimArray

Entfernt aus einer eindimensionalen Matrix alle Einträge vom Typ Null, Empty und der Länge Null.
Zeichenfolgenelemente werden mit der LibreOffice Basic-Funktion Trim() beschnitten.

### Syntax:

          SF_Array.TrimArray(Array_1D As Variant) As Variant

### Parameter:

Array_1D: Die zu durchsuchende Matrix.

### Beispiel:

          Sub Example_TrimArray()
          Dim a As Variant
              a = SF_Array.TrimArray(Array("A","B",Null," D "))
                  ' ("A","B","D")
          End Sub

## Union

Erstellt eine Menge als nullbasierte Matrix, indem der Vereinigungsoperator auf die beiden Eingabematrizen angewendet wird. Die resultierenden Elemente stammen aus beiden Matrizen.
Die resultierende Matrix wird in aufsteigender Reihenfolge sortiert.
Beide Eingabematrizen müssen homogen gefüllt sein, ihre Einträge müssen Skalare vom gleichen Typ sein. Elemente vom Typ Empty und Null sind verboten.
Bei Textvergleichen kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.

### Syntax:

          SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parameter:

Array1_1D: Die erste Eingabematrix.

Array2_1D: Die zweite Eingabematrix.

CaseSensitive: Nur wenn die Matizen mit Zeichenfolgen gefüllt sind, Standard = False.

### Beispiel:

          Sub Example_Union()
          Dim a As Variant
              a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("A", "B", "C", "Z", "b")
          End Sub

## Unique

Erstellt einen Satz eindeutiger Werte, die aus der Eingabematrix abgeleitet werden.
Die Eingabematrix muss homogen gefüllt sein, ihre Einträge müssen Skalare vom gleichen Typ sein. Elemente vom Typ Empty und Null sind verboten.
Bei Textvergleichen kann zwischen Groß- und Kleinschreibung unterschieden werden oder nicht.

### Syntax:

          SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant

### Parameter:

Array_1D: Die Eingabematrix.

CaseSensitive: Nur wenn die Matrix mit Texten gefüllt ist, Standard = False.

### Beispiel:

          Sub Example_Unique()
          Dim a As Variant
              a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
                  '  ("A", "B", "C", "b")
          End Sub

Alle Basic-Routinen oder -Identifikatoren von ScriptForge mit einem Unterstrich "_" sind für internen Gebrauch reserviert. Sie sind nicht für den Einsatz in Basic-Macros gedacht.

Verwandte Themen

Matrixfunktionen

Calc-Funktionen aufrufen

Dienst ScriptForge.Dictionary