ScriptForge.Array -Service

Stellt eine Sammlung von Methoden zum Bearbeiten und Transformieren von Matrizen mit einer Dimension (Vektoren) und MAtrizen mit zwei Dimensionen bereit. Dazu gehören Set-Operationen, Sortieren, Importieren aus und Exportieren in 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):


    Dim arr : arr = Array(1, 2, 3)
    arr = SF_Array.Append(arr, 4)
  

    Dim arr : arr = Array(1, 2, 3)
    Dim svc : svc = SF_Array
    arr = svc.Append(arr, 4)
  

    Dim arr : arr = Array(1, 2, 3)
    Dim svc : svc = CreateScriptService("Array")
    arr = svc.Append(arr, 4)
  
warning

Da Python ĂŒber eine integrierte Listen- und TupelunterstĂŒtzung verfĂŒgt, sind die meisten Methoden im Dienst Array nur fĂŒr Basic-Skripts verfĂŒgbar. Die einzige Ausnahme ist ImportFromCSVFile, die sowohl in Basic als auch in Python unterstĂŒtzt wird.


Liste der Methoden im Dienst Array

Append
AppendColumn
AppendRow
Contains
ConvertToDictionary
Copy
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


tip

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:

svc.Append(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

Parameter:

array_1d: Die bereits vorhandene Matrix kann leer sein.

arg0, arg1, 
: Elemente, die an array_1d angehÀngt werden.

Beispiel:


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

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:

svc.AppendColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

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.

column: Eine eindimensionale Matrix mit so vielen Elementen wie Zeilen in array_2d vorhanden sind.

Beispiel:


    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
  

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:

svc.AppendRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*])

Parameter:

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

row: Eine eindimensionale Matrix mit so vielen Elementen wie es Spalten in array_2d gibt.

Beispiel:


    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
  

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:

svc.Contains(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ""): bool

Parameter:

array_1d: Die zu durchsuchende Matrix.

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

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Standrad = False).

sortorder: Kann entweder "ASC", "DESC" oder "" (nicht sortiert) sein. Der Standardwert ist "".

Beispiel:


    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
  

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:

svc.ConvertToDictionary(array_2d: any[0..*, 0..1]): obj

Parameter:

array_2d: Daten, die in ein Objekt ScriptForge.Dictionary konvertiert werden sollen.

Beispiel:


    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
  

Copy

Erstellt eine Kopie einer ein- oder zweidimensionalen Matrix.

Syntax:

svc.Copy(array_nd: any[0..*]): any[0..*]

svc.Copy(array_nd: any[0..*, 0..*]): any[0..*, 0..*]

Parameter:

array_nd: Die zu kopierende ein- oder zweidimensionale Matrix.

Beispiel:

Eine einfache Zuweisung eines Objekts Array kopiert seine Referenz, anstatt eine Kopie des Inhalts des Objekts zu erstellen. Siehe das Beispiel unten:


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Die nachstehende Zuordnung erfolgt durch Bezugnahme
    b = a
    ' Daher Ă€ndert das Ändern von Werten in "b" auch "a".
    b(0) = 10
    MsgBox a(0) ' 10
  

Durch die Verwendung der Methode Copy wird eine Kopie des gesamten Objektes Array erstellt. Im Beispiel unten sind a und b unterschiedliche Objekte und das Ändern von Werten in b wirkt sich nicht auf Werte in a aus.


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Erstellt eine Kopie von "a" mit der Methode "Copy"
    b = SF_Array.Copy(a)
    b(0) = 10
    MsgBox a(0) ' 1
  

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:

svc.CountDims(array_nd: any): int

Parameter:

array_nd: Die zu untersuchende Matrix.

Beispiel:


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

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:

svc.Difference(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

Parameter:

array1_1d: Eine eindimensionales Referenzmatrix, deren Elemente auf ihre Entfernung untersucht werden.

array2_1d: Eine eindimensionales Matrix, deren Elemente von der ersten Eingabematrix subtrahiert werden.

casesensitive: Dieses Argument gilt nur, wenn die Matrizen mit Zeichenfolgen gefĂŒllt sind (Standard = False).

Beispiel:


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

ExportToTextFile

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

Syntax:

svc.ExportToTextFile(array_1d: any[0..*], filename: str, [encoding: str]): bool

Parameter:

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

filename: Der Name der Textdatei, in welche die Daten geschrieben werden. Der Name muss gemĂ€ĂŸ der aktuellen Eigenschaft FileNaming des Dienstes SF_FileSystem ausgedrĂŒckt werden.

encoding: 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 hat (Standard ist "UTF-8").

Beispiel:


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

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:

svc.ExtractColumn(array_2d: any[0..*, 0..*], columnindex: int): any[0..*, 0..*]

Parameter:

array_2d: Die Matrix, aus der extrahiert werden soll.

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

Beispiel:


    ' 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)
  

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:

svc.ExtractRow(array_2d: any[0..*, 0..*], rowindex: int): any[0..*, 0..*]

Parameter:

array_2d: Die Matrix, aus dem extrahiert werden soll.

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

Beispiel:


    ' 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)
  

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:

svc.Flatten(array_1d: any[0..*]): any[0..*]

Parameter:

array_1d: Die bereits vorhandene Matrix kann leer sein.

Beispiel:


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

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.


    ' 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)
  

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:

svc.ImportFromCSVFile(filename: str, delimiter: str = ',', dateformat: str = ''): any[0..*]

Parameter:

filename: Der Name der Textdatei, welche die Daten enthĂ€lt. Der Name muss gemĂ€ĂŸ der aktuellen Eigenschaft FileNaming des Dienstes SF_FileSystem ausgedrĂŒckt werden.

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. Daten, die standardmĂ€ĂŸig eine leere Zeichenfolge "" sind, werden als normaler Text betrachtet.

Beispiel:

Betrachtet wird die CSV-Datei „myFile.csv“ mit folgendem Inhalt:

Name,Geburtsdatum,Adresse,Stadt

Anna,31.03.2002,"Rue de l'Eglise, 21",Toulouse

Fred,04.05.1998,"Rue Albert Einstein, 113A",Carcassonne

Die folgenden Beispiele in Basic und Python lesen den Inhalt der CSV-Datei in ein Objekt Array ein.

In Basic

    Dim arr As Variant
    arr = SF_Array.ImportFromCSVFile("C:\Temp\MeineDatei.csv", DateFormat := "YYYY/MM/DD")
    MsgBox arr(0, 3) ' Stadt
    MsgBox arr(1, 2) ' Rue de l'Ă©glise, 21
    MsgBox arr(1, 3) ' Toulouse
  
In Python

    from scriptforge import CreateScriptService
    svc = CreateScriptService("Array")
    bas = CreateScriptService("Basic")
    arr = svc.ImportFromCSVFile(r"C:\Temp\MeineDatei.csv", dateformat = "YYYY/MM/DD")
    bas.MsgBox(arr[0][3]) # Stadt
    bas.MsgBox(arr[1][2]) # Rue de l'Ă©glise, 21
    bas.MsgBox(arr[1][3]) # Toulouse
  

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:

svc.IndexOf(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ''): int

Parameter:

array_1d: Die zu durchsuchende Matrix.

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

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Default = False).

sortorder: Kann entweder "ASC", "DESC" oder "" (nicht sortiert) sein. Der Standardwert ist "".

Beispiel:


    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
  

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:

svc.Insert(array_1d: any[0..*], before: int, arg0: any, [arg1: any] ...): any[0..*]

Parameter:

array_1d: Die bereits vorhandene Matrix, kann leer sein.

before: Der Index, vor dem eingefĂŒgt werden soll; muss im Intervall [LBound, UBound + 1] liegen.

arg0, arg1, 
: Elemente, die in array_1d eingefĂŒgt werden.

Beispiel:


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

InsertSorted

FĂŒgt ein neues Element an seiner Stelle in eine sortierte Matrix 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:

svc.InsertSorted(array_1d: any[0..*], item: any, sortorder: str = 'ASC', casesensitive: bool = False): any[0..*]

Parameter:

array_1d: Die Matrix, in welche der Wert eingefĂŒgt wird.

item: Der einzufĂŒgende Skalarwert vom selben Typ wie die vorhandenen Matrixelemente.

sortorder: Kann entweder "ASC" (Standard) oder "DESC" sein.

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Standard = False).

Beispiel:


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

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:

svc.Intersection(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

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:


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

Join2D

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

Syntax:

svc.Join2D(array_2d: any [0..*, 0..*], [columndelimiter: str], [rowdelimiter: str], [quote: str]): str

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: Begrenzt jede Spalte (Standard = Tab/Chr(9)).

rowdelimiter: Begrenzt jede Zeile (Standard = LineFeed/Chr(10))

quote: Wenn True, werden Zeichenfolgen mit doppelten AnfĂŒhrungszeichen geschĂŒtzt. Der Standardwert ist False.

Beispiel:


    ' arr = | 1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5           |
    '       | 6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10 |
    Dim arr as Variant : arr = Array()
    arr = SF_Array.AppendRow(arr, Array(1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5))
    arr = SF_Array.AppendRow(arr, Array(6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10))
    Dim arrText as String
    arrText = SF_Array.Join2D(arr, ",", "/", False)
    ' 1,2,A,,51,2,A,,5/6,7,this is a string,9,106,7,this is a string,9,10
  

Prepend

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

Syntax:

svc.Prepend(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

Parameter:

array_1d: Die bereits vorhandene Matrix, kann leer sein.

arg0, arg1, 
: Eine Liste von Elementen, die array_1d vorangestellt werden.

Beispiel:


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

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:

svc.PrependColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

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.

column: Eine eindimensionale Matrix mit so vielen Elementen wie Zeilen in array_2d vorhanden sind.

Beispiel:


    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
  

PrependRow

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

Syntax:

svc.PrependRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*]

Parameter:

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

row: Eine eindimensionale Matrix, die so viele Elemente enthÀlt, wie es Spalten in array_2d gibt.

Beispiel:


    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
  

RangeInit

Initialisiert eine neue nullbasierte Matrix mit numerischen Werten.

Syntax:

svc.RangeInit(from: num, upto: num, [bystep: num]): num[0..*]

Parameter:

from: Wert des ersten Eintrags.

upto: Das letzte Element sollte UpTo nicht ĂŒberschreiten.

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

Beispiel:


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

Reverse

Gibt die umgekehrte eindimensionale Eingabematrix zurĂŒck.

Syntax:

svc.Reverse(array_1d: any[0..*]): any[0..*]

Parameter:

array_1d: Die umzukehrende Matrix.

Beispiel:


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

Shuffle

Gibt eine zufĂ€llige Permutation einer eindimensionalen Matrix zurĂŒck.

Syntax:

svc.Shuffle(array_1d: any[0..*]): any[0..*]

Parameter:

array_1d: Die zu durchmischende Matrix.

Beispiel:


    Dim a As Variant
    a = SF_Array.Shuffle(Array(1, 2, 3, 4))
        ' Matrix "a" ist jetzt in zufÀlliger Reihenfolge, beispielsweise (2, 3, 1, 4)
  

Slice

Gibt eine Teilmenge einer eindimensionalen Matrix zurĂŒck.

Syntax:

svc.Slice(array_1d: any[0..*], from: int, [upto: int]): any[0..*]

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). Der Standardwert ist die Obergrenze von array_1d. Wenn bis < von dann ist die zurĂŒckgegebene Matrix leer.

Beispiel:


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

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:

svc.Sort(array_1d: any[0..*], sortorder: str, casesensitive: bool = False): any[0..*]

Parameter:

array_1d: Die zu sortierende Matrix.

sortorder: Kann entweder "ASC" (Standard) oder "DESC" sein.

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Standard = False).

Beispiel:


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

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:

svc.SortColumns(array_2d: any[0..*, 0..*], rowindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

Parameter:

array_2d: Die zu sortierende zweidimensionale Matrix.

rowindex: Der Index der Zeile, die als Referenz zum Sortieren der Spalten verwendet wird.

sortorder: Kann entweder "ASC" (Standard) oder "DESC" sein.

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Standard = False).

Beispiel:


    ' arr = | 5, 7, 3 |
    '       | 1, 9, 5 |
    '       | 6, 1, 8 |
    Dim arr as Variant : arr = Array(5, 7, 3)
    arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
    arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
    arr = SF_Array.SortColumns(arr, 2, "ASC")
    ' arr = | 7, 5, 3 |
    '       | 9, 1, 5 |
    '       | 1, 6, 8 |
  

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:

svc.SortRows(array_2d: any[0..*, 0..*], columnindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

Parameter:

array_2d: Die zu sortierende Matrix.

columnindex: Der Index der Spalte, die als Referenz zum Sortieren der Zeilen verwendet wird.

sortorder: Kann entweder "ASC" (Standard) oder "DESC" sein.

casesensitive: Nur fĂŒr Zeichenfolgenvergleiche (Standard = False).

Beispiel:


    ' arr = | 5, 7, 3 |
    '       | 1, 9, 5 |
    '       | 6, 1, 8 |
    Dim arr as Variant : arr = Array(5, 7, 3)
    arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
    arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
    arr = SF_Array.SortRows(arr, 0, "ASC")
    ' arr = | 1, 9, 5 |
    '       | 5, 7, 3 |
    '       | 6, 1, 8 |
  

Transpose

Vertauscht Zeilen und Spalten in einer zweidimensionalen Matrix.

Syntax:

svc.Transpose(array_2d: any[0..*, 0..*]): any[0..*, 0..*]

Parameter:

array_2d: Die zu transponierende zweidimensionale Matrix.

Beispiel:


    ' arr1 = | 1, 2 |
    '        | 3, 4 |
    '        | 5, 6 |
    arr1 = Array(1, 2)
    arr1 = SF_Array.AppendRow(arr1, Array(3, 4))
    arr1 = SF_Array.AppendRow(arr1, Array(5, 6))
    arr2 = SF_Array.Transpose(arr1)
    ' arr2 = | 1, 3, 5 |
    '        | 2, 4, 6 |
    MsgBox arr2(0, 2) ' 5
  

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:

svc.TrimArray(array_1d: any[0..*]): any[0..*]

Parameter:

array_1d: Die zu beschneidende Matrix.

Beispiel:


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

Union

Erstellt eine Menge als nullbasierte Matrix, indem der Vereinigungsoperator auf die beiden Eingabematrizen angewendet wird. Die resultierenden Elemente stammen aus einer der 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:

svc.Union(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

Parameter:

array1_1d: Die erste Eingabematrix.

array2_1d: Die zweite Eingabematrix.

casesensitive: Nur anwendbar, wenn die Matrizen mit Zeichenfolgen gefĂŒllt sind (Standard = False).

Beispiel:


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

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:

svc.Unique(array_1d: any[0..*], casesensitive: bool = False): any[0..*]

Parameter:

array_1d: Die Eingabematrix.

casesensitive: Nur anwendbar, wenn die Matrix mit Zeichenfolgen gefĂŒllt ist (Standard = False).

Beispiel:


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

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind fĂŒr den internen Gebrauch reserviert. Sie sind nicht fĂŒr die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.


Bitte unterstĂŒtzen Sie uns!