ScriptForge.Matrise tjeneste

Gir en samling metoder for Ä manipulere og transformere matriser med én dimensjon (vektorer) og matriser med to dimensjoner (matriser). Dette inkluderer settoperasjoner, sortering, import til og eksport fra tekstfiler.

Matriser med mer enn to dimensjoner kan ikke brukes med metodene i denne tjenesten, det eneste unntaket er CountDims-metoden som godtar matriser med et hvilket som helst antall dimensjoner.

Matriseelementer kan inneholde alle typer verdier, inkludert (under)matriser.

Tjenesteaktivering

FÞr du bruker Matrise-tjenesten, mÄ ScriptForge-biblioteket lastes ved Ä bruke:


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

NÄr du laster biblioteket, opprettes SF_Array-objektet som kan brukes til Ä kalle metodene i Tabell-tjenesten.

FÞlgende kodebiter viser de ulike mÄtene Ä kalle metoder i Matrise-tjenesten (tilfÞy-metoden brukes som et eksempel):


    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

Fordi Python har innebygd liste- og tuppelstÞtte, er de fleste metodene i Matrise-tjenesten kun tilgjengelig for grunnleggende skript. Det eneste unntaket er ImportFromCSVFile som stÞttes i bÄde Basic og Python.


Liste over metoder i Matrisetjenesten

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

Det fĂžrste argumentet for de fleste metoder er matrise-objektet som skal vurderes. Den sendes alltid ved referanse og forblir uendret. Metoder som Legg til, Legg til foran, osv. returnerer et nytt matrise-objekt etter at de er utfĂžrt.


Append

Legger til elementene som er oppfÞrt som argumenter pÄ slutten av inndatamatrisen.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan vĂŠre tom.

arg0, arg1, ...: Elementer som vil bli lagt til array_1d.

Eksempel:


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

AppendColumn

Legger til en ny kolonne pÄ hÞyre side av en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den fÞrste todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan vÊre tom. Hvis den matrisen bare har én dimensjon, anses den som den fÞrste kolonnen i den resulterende todimensjonale matrisen.

kolonne: En 1-dimensjonal matrise med like mange elementer som det er rader i array_2d.

Eksempel:


    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

Legg til en ny rad nederst i en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den fĂžrste todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan vĂŠre tom. Hvis den matrisen har 1 dimensjon, anses den som den fĂžrste raden i den resulterende 2-dimensjonale matrisen.

rad: En 1-dimensjonal matrise med like mange elementer som det er kolonner i array_2d.

Eksempel:


    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

Sjekk om en én-dimensjons matrise inneholder et bestemt tall, tekst eller dato. Tekstsammenligning kan skille mellom store og smÄ bokstaver eller ikke.
Sorterte inndatamatriser mÄ fylles homogent, noe som betyr at alle elementer mÄ vÊre skalarer av samme type (Tom og Null elementer er forbudt).
Resultatet av metoden er uforutsigbart nÄr matrisen kunngjÞres som sortert og i realiteten ikke er det.
Et binÊrt sÞk gjÞres nÄr matrisen er sortert, ellers skannes den ganske enkelt fra topp til bunn og Tom og Null elementer ignoreres.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal skannes.

tofind: Et tall, en dato eller en streng som skal finnes.

skiller mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

sortorder: Det kan enten vĂŠre "ASC", "DESC" eller "" (ikke sortert). Standardverdien er "".

Eksempel:


    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

Lagre innholdet i en 2-kolonner matrise i et ScriptForge.Dictionary-objektet.
NĂžkkelen vil bli trukket ut fra den fĂžrste kolonnen, elementet fra den andre.

Syntaks:

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

Parametre:

array_2d: Data som skal konverteres til et ScriptForge.Dictionary-objekt.

Eksempel:


    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

Oppretter en kopi av en 1D- eller 2D-matrise.

Syntaks:

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

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

Parametre:

array_nd: 1D- eller 2D-matrisen som skal kopieres.

Eksempel:

En enkel tilordning av et Matrise-objekt vil kopiere referansen i stedet for Ă„ lage en kopi av objektets innhold. Se eksempelet nedenfor:


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Oppgaven nedenfor er laget ved referanse
    b = a
    ' Derfor vil endring av verdier i "b" ogsÄ endre "a"
    b(0) = 10
    MsgBox a(0) ' 10
  

Ved Ä bruke Kopier-metoden lages en kopi av hele Matrise-objektet. I eksemplet nedenfor er a og b forskjellige objekter, og endring av verdier i b vil ikke pÄvirke verdiene i a .


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Oppretter en kopi av "a" ved Ă„ bruke "Kopier"-metoden
    b = SF_Array.Copy(a)
    b(0) = 10
    MsgBox a(0) ' 1
  

CountDims

Tell antall dimensjoner til en matrise. Resultatet kan vĂŠre stĂžrre enn to.
Hvis argumentet ikke er en matrise, returnerer -1
Hvis matrisen ikke er initialisert, returnerer 0.

Syntaks:

svc.CountDims(array_nd: any): int

Parametre:

array_nd: Matrisen som skal undersĂžkes.

Eksempel:


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

Difference

Bygg et sett, som en nullbasert matrise, ved Ä bruke differanseoperatoren pÄ de to inngangsmatrisene. Resulterende elementer kommer fra den fÞrste matrisen og ikke fra den andre.
Den resulterende matrisen er sortert i stigende rekkefĂžlge.
Begge innput-matriser mÄ fylles homogent, elementene deres mÄ vÊre skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og smÄ bokstaver.

Syntaks:

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

Parametre:

array1_1d: En 1-dimensjonal referansematrise, hvis elementer undersĂžkes for fjerning.

array2_1d: En 1-dimensjonal matrise, hvis elementer trekkes fra den fĂžrste inngangsmatrisen.

skiller mellom store og smÄ bokstaver: Dette argumentet er bare aktuelt hvis matrisene er fylt med strenger (Standard = Usann).

Eksempel:


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

ExportToTextFile

Skriv alle elementer i matrisen sekvensielt til en tekstfil. Hvis filen allerede eksisterer, vil den bli overskrevet uten forvarsel.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal eksporteres. Den mÄ bare inneholde strenger.

filnavn: Navnet pÄ tekstfilen som dataene skal skrives til. Navnet mÄ uttrykkes i henhold til den gjeldende FilNavgivings-egenskapen til SF_FileSystem-tjenesten.

koding: Tegnsettet som skal brukes. Bruk ett av navnene som er oppfĂžrt i IANA-tegnsett. Merk at LibreOffice kanskje ikke implementerer alle eksisterende tegnsett (standard er "UTF-8").

Eksempel:


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

ExtractColumn

Trekk ut en spesifikk kolonne fra en todimensjonal matrise som en ny matrise.
Dens nedre LBound og Ăžvre UBound grenser er identiske med den for den fĂžrste dimensjonen til inngangsmatrisen.

Syntaks:

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

Parametre:

array_2d: Matrisen det skal trekkes ut fra.

columnindex: Kolonnenummeret som skal trekkes ut - mÄ vÊre i intervallet [LBound, UBound].

Eksempel:


    'Oppretter en 3x3-matrise: |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))
    Trekker ut den tredje kolonnen: |3, 6, 9|
    col = SF_Array.ExtractColumn(mat, 2)
  

ExtractRow

Trekk ut en spesifikk rad fra en todimensjonal matrise som en ny matrise.
Dens nedre LBound og Ăžvre UBound grenser er identiske med den for den andre dimensjonen til inngangsmatrisen.

Syntaks:

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

Parametre:

array_2d: Matrisen det skal trekkes ut fra.

rowindex: Radnummeret som skal trekkes ut - mÄ vÊre i intervallet [LBound, UBound].

Eksempel:


    'Oppretter en 3x3-matrise: |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))
    Trekker ut den fĂžrste raden: |1, 2, 3|
    row = SF_Array.ExtractRow(mat, 0)
  

Flatten

Stable alle enkeltelementer i en matrise og alle elementer i undermatrisene i én ny matrise uten undermatriser. Tomme undermatriser ignoreres, og undermatriser med flere dimensjoner stÞrre enn én blir ikke flatet ut.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan vĂŠre tom.

Eksempel:


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

Du kan bruke Flatte-metoden sammen med andre metoder som Legg til eller Legg til foran for Ă„ sette sammen et sett med 1D-matriser til en enkelt 1D-matrise.


Eksempel:

Neste er et eksempel pÄ hvordan metodene Flate og Legg til kan kombineres for Ä sette sammen tre matriser.


    'Lager tre matriser for dette eksemplet
    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)
    'Setter sammen de tre matrisene til en enkelt 1D-matrise
    Dim arr as Variant
    arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
    '(1, 2, 3, 4, 5, 6, 7, 8, 9)
  

ImportFromCSVFile

Importer dataene i en kommadelte verdier (CSV)-fil. Kommaet kan erstattes av et hvilket som helst tegn.

Det aktuelle CSV-formatet er beskrevet i IETF Common Format og MIME Type for CSV-filer.

Hver linje i filen inneholder en fullstendig post (linjedeling er ikke tillatt).
Sekvenser som \n, \t, ... forblir imidlertid uendret. Bruk metoden SF_String.Unescape() for Ă„ administrere dem.

Metoden returnerer en todimensjonal matrise hvis rader tilsvarer en enkelt post som er lest fra filen og hvis kolonner tilsvarer et felt i posten. Det foretas ingen kontroll av sammenhengen mellom felttypene pÄ tvers av kolonnene. En beste gjetning vil bli gjort for Ä identifisere numeriske og datotyper.

Hvis en linje inneholder fÊrre eller flere felt enn den fÞrste linjen i filen, vil et unntak bli skapt. Tomme linjer blir imidlertid ganske enkelt ignorert. Hvis stÞrrelsen pÄ filen overskrider grensen for antall elementer (se inne i koden), utlÞses en advarsel og matrisen avkortes.

Syntaks:

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

Parametre:

filnavn: Navnet pÄ tekstfilen som inneholder dataene. Navnet mÄ uttrykkes i henhold til den gjeldende FileName-egenskapen til SF_FileSystem-tjenesten.

skilletegn: Et enkelt tegn, vanligvis et komma, et semikolon eller et TAB-tegn (Standard = ",").

datoformat: En spesiell mekanisme hĂ„ndterer datoer nĂ„r datoformat er enten "ÅÅÅÅ-MM-DD", "DD-MM-ÅÅÅÅ" eller "MM-DD-ÅÅÅÅ". Bindestreken (-) kan erstattes av en prikk (.), en skrĂ„strek (/) eller et mellomrom. Andre datoformater vil bli ignorert. Datoer som skrives til en tom streng "" anses som normal tekst.

Eksempel:

Tenk pÄ CSV-filen "myFile.csv" med fÞlgende innhold:

Name,DateOfBirth,Address,City

Anna,2002/03/31,"Rue de l'église, 21",Toulouse

Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

Eksemplene nedenfor i Basic og Python leser innholdet i CSV-filen inn i et Matrise-objekt.

I Basic

    Dim arr As Variant
    arr = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
    MsgBox arr(0, 3) ' City
    MsgBox arr(1, 2) ' Rue de l'église, 21
    MsgBox arr(1, 3) ' Toulouse
  
I Python

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

IndexOf

Se i en éndimensjons matrise etter et tall, en streng eller en dato. Tekstsammenligning kan skille mellom store og smÄ bokstaver.
Hvis matrisen er sortert, mÄ den fylles homogent, noe som betyr at alle elementer mÄ vÊre skalarer av samme type (Tom og Null elementer er forbudt).
Resultatet av metoden er uforutsigbart nÄr matrisen settes til sortert og faktisk ikke er det.
Et binÊrt sÞk utfÞres pÄ sorterte matriser. Ellers skannes matriser ganske enkelt fra topp til bunn, og Tomme og Null elementer ignoreres.

Metoden returnerer LBound(innputt matrise) - 1 hvis sĂžket ikke var vellykket.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal skannes.

Ă„ finne: Et tall, en dato eller en streng .

skiller mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

sortorder: Det kan enten vĂŠre "ASC", "DESC" eller "" (ikke sortert). Standardverdien er "".

Eksempel:


    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

Sett inn fĂžr en gitt indeks for inndatamatrisen elementene som er oppfĂžrt som argumenter.
Argumenter settes inn blindt. Hver av dem kan enten vĂŠre en skalar av hvilken som helst type eller en undergruppe.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan vĂŠre tom.

fÞr: Indeksen fÞr, som skal settes inn; mÄ vÊre i intervallet [LBound, UBound + 1].

arg0, arg1, ...: Elementer som vil bli satt inn i array_1d.

Eksempel:


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

InsertSorted

Setter inn et nytt element pÄ sin plass i en sortert matrise.
Matrisen mÄ fylles homogent, noe som betyr at alle elementer mÄ vÊre skalarer av samme type.
Tomme og Null elementer er forbudt.

Syntaks:

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

Parametre:

array_1d: Matrisen som verdien skal settes inn i.

item: Den skalĂŠre verdien som skal settes inn, av samme type som de eksisterende matriseelementene.

sorteringsrekkefĂžlge: Det kan enten vĂŠre "ASC" (standard) eller "DESC".

skille mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

Eksempel:


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

Intersection

Bygg et sett, som en nullbasert matrise, ved Ä bruke skjÊringssettoperatoren pÄ de to inngangsmatrisene. Resulterende elementer finnes i begge matriser.
Den resulterende matrisen er sortert i stigende rekkefĂžlge.
Begge innputt-matriser mÄ fylles homogent, med andre ord mÄ alle elementer vÊre skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og smÄ bokstaver eller ikke.

Syntaks:

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

Parametre:

array1_1d: Den fĂžrste inndatamatrisen.

array2_1d: Den andre inndatamatrisen.

skiller mellom store og smÄ bokstaver: Gjelder for matriser fylt med tekstelementer (Standard = Usann).

Eksempel:


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

Join2D

SlÄ sammen en todimensjonal matrise med to skilletegn, én for kolonnene, én for radene.

Syntaks:

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

Parametre:

array_2d: Hvert element mÄ vÊre enten tekst, et tall, en dato eller en boolsk.
Datoer transformeres til formatet ÅÅÅÅ-MM-DD tt:mm:ss.
Ugyldige elementer erstattes av en streng med null lengde.

kolonneavgrensning: Avgrenser hver kolonne (standard = Tab/Chr(9)).

radavgrenser: Avgrenser hver rad (standard = LineFeed/Chr(10))

kvote: Hvis Sann, beskytt strenger med doble anfĂžrselstegn. Standard er Usann.

Eksempel:


    ' 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

Sett foran pÄ begynnelsen av inndatamatrisen elementene som er oppfÞrt som argumenter.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan vĂŠre tom.

arg0, arg1, ...: En liste over elementer som skal legges til foran array_1d.

Eksempel:


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

PrependColumn

Sett en ny kolonne foran pÄ venstre side av en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den fÞrste todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan vĂŠre tom. Hvis den matrisen har 1 dimensjon, anses den som den siste kolonnen i den resulterende 2-dimensjonale matrisen.

kolonne: En 1-dimensjonal matrise med like mange elementer som det er rader i array_2d.

Eksempel:


    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

Legg til en ny rad i begynnelsen av en 2-dimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den fĂžrste 2-dimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan vĂŠre tom. Hvis den matrisen har 1 dimensjon, anses den som den siste raden i den resulterende 2-dimensjonale matrisen.

rad: En 1-dimensjonal matrise som inneholder like mange elementer som det er kolonner i array_2d.

Eksempel:


    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

Initialiser en ny nullbasert matrise med numeriske verdier.

Syntaks:

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

Parametre:

fra: Verdien av det fĂžrste elementet.

opptil: Det siste elementet skal ikke overstige opptil.

bystep: Forskjellen mellom to pÄfÞlgende elementer (standard = 1).

Eksempel:


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

Reverse

Returner den omvendte éndimensjonale inndatamatrisen.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal reverseres.

Eksempel:


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

Shuffle

Returnerer en tilfeldig permutasjon av en endimensjonal matrise.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal blandes.

Eksempel:


    Dim a As Variant
    a = SF_Array.Shuffle(Array(1, 2, 3, 4))
        ' Array "a" er nÄ i tilfeldig rekkefÞlge, f.i. (2, 3, 1, 4)
  

Slice

Returnerer et delsett av en endimensjonal matrise.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal deles.

fra: Den nedre indeksen i array_1d av undergruppen som skal trekkes ut (fra inkludert)

opptil: Den Þvre indeksen i array_1d av undergruppen som skal trekkes ut (opptil inkludert). Standardverdien er den Þvre grensen til array_1d. Hvis opptil < fra sÄ er den returnerte matrisen tom.

Eksempel:


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

Sort

Sorter en éndimensjons matrise i stigende eller synkende rekkefÞlge. Tekstsammenligninger kan skille mellom store og smÄ bokstaver eller ikke.
Matrisen mÄ fylles homogent, noe som betyr at elementer mÄ vÊre skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Tom < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal sorteres.

sorteringsrekkefĂžlge: Det kan enten vĂŠre "ASC" (standard) eller "DESC".

skiller mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

Eksempel:


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

SortColumns

Returner en permutasjon av kolonnene i en todimensjonal matrise, sortert etter verdiene til en gitt rad.
Raden skal fylles homogent, noe som betyr at alle elementer mÄ vÊre skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Empty < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_2d: Den 2-dimensjonale matrisen som skal sorteres.

rowindex: Indeksen til raden som skal brukes som referanse for Ă„ sortere kolonnene.

sorteringsrekkefĂžlge: Det kan enten vĂŠre "ASC" (standard) eller "DESC".

skiller mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

Eksempel:


    ' 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

Returner en permutasjon av radene i en todimensjonal matrise, sortert etter verdiene til en gitt kolonne.
Kolonnen mÄ fylles homogent, derfor mÄ alle elementer vÊre skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Tom < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_2d: Matrisen som skal sorteres.

columnindex: Indeksen til kolonnen som skal brukes som referanse for Ă„ sortere radene.

sorteringsrekkefĂžlge: Det kan enten vĂŠre "ASC" (standard) eller "DESC".

skiller mellom store og smÄ bokstaver: Bare for strengsammenligninger (Standard = Usann).

Eksempel:


    ' 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

Bytter rader og kolonner i en todimensjonal matrise.

Syntaks:

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

Parametre:

array_2d: Den 2-dimensjonale matrisen som skal transponeres.

Eksempel:


    ' 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

Fjern alle Null, Tomme og null-lengde oppfÞringer fra en éndimensjons matrise.
Strengelementer trimmes med LibreOffice Basic Trim()-funksjonen.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal trimmes.

Eksempel:


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

Union

Bygger et sett, som en nullbasert matrise, ved Ä bruke unionsoperatoren pÄ de to inngangsmatrisene. Resulterende elementer kommer fra en av begge matrisene.
Den resulterende matrisen er sortert i stigende rekkefĂžlge.
Begge innputt-matrisene mÄ fylles homogent, elementene deres mÄ vÊre skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og smÄ bokstaver.

Syntaks:

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

Parametre:

array1_1d: Den fĂžrste inndatamatrisen.

array2_1d Den andre inndatamatrisen.

skiller mellom store og smÄ bokstaver: Gjelder bare hvis matrisene er fylt med strenger (Standard = Usann).

Eksempel:


    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

Bygg et sett med unike verdier utledet fra inndatamatrisen.
Inndatamatrisen mÄ fylles homogent, elementene mÄ vÊre skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og smÄ bokstaver.

Syntaks:

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

Parametre:

array_1d: Inndatamatrisen.

skiller mellom store og smÄ bokstaver: Gjelder bare hvis matrisen er fylt med strenger (Standard = Usann).

Eksempel:


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

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment Ă„ brukes i grunnleggende makroer eller Python-skript.