Storitev ScriptForge.Array

Ponuja zbirko metod za ravnanje z in preoblikovanje enodimenzionalnih polj (vektorjev) in dvodimenzionalnih polj (matrik). To vključuje operacije nad množicami, razvrščanje ter uvažanje in izvažanje besedilnih datotek.

Polj z več kot dvema dimenzijama ni možno uporabljati z metodami te storitve, edina izjema je metoda CountDims, ki sprejema polja poljubnih dimenzij.

Elementi polja so lahko vrednosti poljubne vrste, vključno s (pod)polji.

Priklic storitve

Pred uporabo storitve Array je potrebno naložiti knjižnico ScriptForge:


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
   

Z nalaganjem knjižnice ustvarite predmet SF_Array, ki ga lahko uporabite za klicanje metod v storitvi Array.

Naslednji odlomki kode kažejo različne načina klica metod storitve Array (metoda Append služi kot primer):


      SF_Array.Append(...)
   

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

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

Metoda CreateScriptService je na voljo šele po nalaganju knjižnice ScriptForge.


Metode

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


tip

Prvi argument večine metod je predmet polja, ki bo obravnavan. Vedno je podan s sklicem in se ne spreminja. Metode, kot so Append, Prepend itn. po izvedbi vrnejo nov predmet polja.


Append

Doda elemente, navedene kot argumente, na konec vhodnega polja.

Skladnja:


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

Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

arg0, ...: seznam elementov, ki jih želite pripeti, dodati polju Array_1D.

Primer:


      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

Doda nov stolpec na desno stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

Skladnja:


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

Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če ima to polje samo eno dimenzijo, velja kot prvi stolpec rezultatskega dvodimenzionalnega polja.

New_Column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

Primer:


      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

Doda novo vrstico na dno dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

Skladnja:


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

Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za prvo vrstico ciljnega dvodimenzionalnega polja.

Row: enodimenzionalno polje s toliko elementi, kolikor je stolpcev v polju Array_2D.

Primer:


      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

Preveri, če enodimenzionalno polje vsebuje določeno število, besedilo ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Vhodna razvrščena polja morajo biti zapolnjena homogeno, kar pomeni, da morajo biti vsi njihovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
Dvojiško iskanje se izvee, ko je polje razvrščeno, sicer se preprosto preišče od vrha do dna, elementi Empty in Null pa so prezrti.

Skladnja:


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

Parametri:

Array_1D: polje za pregled.

ToFind: iskano število, datum ali niz.

CaseSensitive: samo za primerjavo nizov, privzeto = False.

SortOrder: vrstni red razvrščanja, možne vrednosti so "ASC", "DESC" in "" (= ni razvrščeno, privzeta vrednost).

Primer:


      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

Shrani vsebino dvostolpčnega polja v predmet ScriptForge.Dictionary.
Ključ bo izluščen iz prvega stolpca, element iz drugega.

Skladnja:


      SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
   

Parametri:

Array_1D: prvi stolpec mora vsebovati izključno nize dolžine > 0, v poljubnem zaporedju.

Primer:


      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

Preštej število dimenzij matrike. Rezultat je lahko večji od dva.
Če argument ni matrika, vrne -1
Če matrika ni inicializirana, vrne 0.

Skladnja:


      SF_Array.CountDims(Array_ND As Variant) As Integer
   

Parametri:

Array_ND: polje za preučevanje.

Primer:


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

Difference

Tvori množico, kot ničelno polje, tako da izvede operacijo razlike na obeh vhodnih poljih. Elementi rezultata izvirajo iz prvega polja, ne iz drugega.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

Skladnja:


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

Parametri:

Array1_1D: enodimenzionalno referenčno polje, katerega elemente pregledujemo za odstranitev.

Array2_1D: enodimenzionalno polje, katerega elementi se odštevajo od prvega vhodnega polja.

CaseSensitive: samo če so polja izpolnjena z nizi, privzeto = False.

Primer:


      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

Zapiši vse elemente polja zaporedno v besedilno datoteko. Če datoteka že obstaja, bo prepisana brez opozorila.

Skladnja:


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

Parametri:

Array_1D: matrika za izvoz. Vsebovati mora zgolj nize.

FileName: ime besedilne datoteke, ki vsebuje podatke. Ime je izraženo kot jo podaja trenutna lastnost FileNaming storitve SF_FileSystem. Privzeto = poljubno (sprejeta tako v zapisu URL kot v domorodnem zapisu operacijskega sistema).

Encoding: nabor znakov, ki naj bo uporabljen. Uporabi eno od imen, navedenih v naborih znakov IANA (v angl. jeziku). Upoštevajte, da LibreOffice morda ne podpira vseh obstoječih naborov znakov. Privzeta vrednost je »UTF-8«.

Primer:


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

ExtractColumn

Izveleč določen stolpec iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam prve razsežnosti vhodnega polja.

Skladnja:


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

Parametri:

Array_2D: polje, iz katerega želite izvleči podatke.

ColumnIndex: številka stolpca, ki ga želite izvleči – mora biti v intervalu [LBound, UBound].

Primer:


      Sub Example_ExtractColumn
         'Ustvari polje 3x3: |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))
         'Izvleče tretji stolpec: |3, 6, 9|
         col = SF_Array.ExtractColumn(mat, 2)
      End Sub
   

ExtractRow

Izloči določeno vrstico iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam druge razsežnosti vhodnega polja.

Skladnja:


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

Parametri:

Array_2D: polje, iz katerega želite izvleči podatke.

RowIndex: številka vrstice, ki jo želite izvleči – mora biti v intervalu [LBound, UBound].

Primer:


      Sub Example_ExtractRow
         'Ustvari polje 3x3: |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))
         'Izvleče prvo vrstico: |1, 2, 3|
         row = SF_Array.ExtractRow(mat, 0)
      End Sub
   

Flatten

Zloži vse posamezne elemente polja in vse elemente njenih podpolj v eno samo novo polje brez podpolj. Prazna podpolja so prezrta in podpolja več kot ene dimenzije niso sploščena.

Skladnja:


      SF_Array.Flatten(Array_1D As Variant) As Variant
   

Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

Primer:


      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
   
tip

Metodo Flatten lahko uporabite z drugimi metodami, kot sta Append in Prepend, da spojite množico enodimenzionalnih polj v eno samo enodimenzionalno polje.


Primer:

Sledi primer, kako lahko kombinirate metodi Flatten in Append, da spojite tri polja.


      Sub Concatenate_Example
         'Ustvari tri polja za ta primer
         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)
         'Poveže oz. spoji tri polja v eno samo enodimenzionalno polje
         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

Uvozi podatke, vsebovane v datoteki, ločeni z vejicami (CSV). Vejico lahko zamenja poljuben znak.

Uporabljeni zapis CSV je podrobno opisan na strani IETF Common Format and MIME Type for CSV Files (v angl.).

Vsaka vrstica v datoteki vsebuje poln zapis (deljenje vrstic ni dovoljeno).
Zaporedja \n, \t itn. pa ostanejo nespremenjena. Uporabite metodo SF_String.Unescape() za njihovo upravljanje.

Metoda vrne dvodimenzionalno polje, katerega vrstice ustrezajo posameznim zapisom, prebranim iz datoteke, in katerega stolpci ustrezajo poljem v zapisih. Pri tem se ne izvede preverjanje o koherentnosti vrst polj po stolpcih. Opravljena bo presoja za identifikacijo številskih in datumskih vrst.

Če vrstica vsebuje manj ali več polj kot prva vrstica v datoteki, prikliče izjemo. Prazne vrstice pa so enostavno prezrte. Če velikost datoteke presega mejno število elementov (glejte kodo), javi napako in polje je okrajšano.

Skladnja:


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

Parametri:

FileName: ime besedilne datoteke, ki vsebuje podatke. Ime je izraženo kot jo podaja trenutna lastnost FileNaming storitve SF_FileSystem. Privzeto = poljubno (sprejeta tako v zapisu URL kot v domorodnem zapisu operacijskega sistema).

Delimiter: posamezen znak kot ločilo, običajno vejica, podpičje ali tabulator. Privzeto = ",".

DateFormat: datume obravnava poseben mehanizem, ko je oblika datuma DateFormat ena od vrednosti "YYYY-MM-DD", "DD-MM-YYYY" ali "MM-DD-YYYY". Pomišljaj (-) lahko zamenjate s piko (.), poševnico (/) ali presledkom. Druge oblike datuma bodo prezrte. Datumi s privzeto vrednostjo "" veljajo za navadno besedilo.

Primer:

Glede na to datoteko CSV:


      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

V enodimenzionalnem polju poiščite število, niz ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Če je polje razvrščeno, mora biti zapolnjeno homogeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
V razvrščenih poljih se izvede dvojiško iskanje. Sicer se polja enostavno pregleda od vrha do dna in elementi Empty in Null so prezrti.

Ta metoda vrne LBound(input array) - 1, če iskanje ni bilo uspešno.

Skladnja:


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

Parametri:

Array_1D: polje za pregled.

ToFind: iskano število, datum ali niz.

CaseSensitive: samo za primerjavo nizov, privzeto = False.

SortOrder: način razvrščenosti, t.j. "ASC", "DESC" ali "" (= ni razvrščeno, to je privzeta vrednost)

Primer:


      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

Elemente, nanizane kot argumente, vstavi v vhodno polje pred danim indeksom.
Argumenti so naključno vstavljeni. Vsak izmed njih je lahko skalar ali poljubna vrsta podpolja.

Skladnja:


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

Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

Before: indeks, pred katerim želimo vstavljati; mora biti v intervalu [LBound, UBound + 1].

arg0, ...: seznam elementov za vstavljanje v polje Array_1D.

Primer:


      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

Na njemu ustrezno mesto v razvrščeno polje vstavi nov element.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta prepovedana.

Skladnja:


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

Parametri:

Array_1D: polje za razvrščanje.

Item: skalarna vrednost za vstavljanje, iste vrste kot obstoječi elementi polja.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

Primer:


      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

Tvori množico, kot ničelno polje, tako da izvede operacijo preseka na obeh vhodnih poljih. Elementi rezultata se nahajajo v obeh poljih.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

Skladnja:


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

Parametri:

Array1_1D: prvo vhodno polje.

Array2_1D: drugo vhodno polje.

CaseSensitive: velja za polja, zapolnjena z besedilnimi elementi, privzeto = False.

Primer:


      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

Združi dvodimenzionalno polje z dvema ločiloma: prvim za stolpce, drugim za vrstice.

Skladnja:


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

Parametri:

Array_2D: dvodimenzionalno polje, vsak njegov element mora biti besedilo, število, datum ali logična vrednost.
Datumi se pretvorijo v obliko LLLL-MM-DD uu:mm:ss.
Neveljavne elemente zamenja niz ničelne dolžine.

ColumnDelimiter: ločilo med stolpci (privzeto = tabulator/Chr(9)).

RowDelimiter: ločilo med vrsticami (privzeto = LineFeed/Chr(10))

Quote: če je True, zaščiti nize z dvojnimi narekovaji. Privzeta vrednost je False.

Primer:


      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

Elemente, nanizane kot argumente, vstavi na začetek vhodnega polja.

Skladnja:


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

Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

arg0, ...: seznam elementov, ki jih želite pripeti na začetek polja Array_1D.

Primer:


      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

Pripne nov stolpec na levo stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

Skladnja:


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

Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnji stolpec ciljnega dvodimenzionalnega polja.

Column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

Primer:


      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

Doda novo vrstico na začetek dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

Skladnja:


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

Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnjo vrstico ciljnega dvodimenzionalnega polja.

Row: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

Primer:


      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

Inicializira novo ničelno polje s številskimi vrednostmi.

Skladnja:


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

Parametri:

From: vrednost prvega elementa.

UpTo: zadnji element naj ne presega UpTo.

ByStep: razlika med dvema zaporednima elementoma (privzeto = 1).

Primer:


      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

Vrne preobrnjeno enodimenzionalno vhodno matriko.

Skladnja:


      SF_Array.Reverse(Array_1D As Variant) As Variant
   

Parametri:

Array_1D: polje, ki ga želimo preobrniti.

Primer:


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

Shuffle

Vrne poljubno permutacijo enodimenzionalnega polja.

Skladnja:


      SF_Array.Shuffle(Array_1D As Variant) As Variant
   

Parametri:

Array_1D: polje, ki ga želimo premešati.

Primer:


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

Slice

Vrne podmnožico enodimenzionalnega polja.

Skladnja:


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

Parametri:

Array_1D: polje, ki ga želite razrezati.

From: spodnji indeks v Array_1D podpolja za izvlečenje (vključno s From)

UpTo: zgornji indeks Array_1D podpolja za izvlečenje (vključno z UpTo). Privzeto = zgornja meja Array_1D. Če je UpTo < From, bo vrnjeno polje prazno.

Primer:


      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

Razvrsti enodimenzionalno polje po naraščajočem ali padajočem vrstnem redu. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

Skladnja:


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

Parametri:

Array_1D: polje za razvrščanje.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

Primer:


      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

Vrne permutacijo stolpcev v dvodimenzionalnem polju, razvščenih po vrednostih v podani vrstici.
Vrstica mora biti homogeno zapolnjena, kar pomeni, da morajo biti vsi njeni elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

Skladnja:


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

Parametri:

Array_1D: polje za razvrščanje.

RowIndex: indeks vrstice, glede na katero bodo razvrščeni stolpci.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

Primer:


      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

Vrne permutacijo vrstic v dvodimenzionalnem polju, razvščenih po vrednostih v podanem stolpcu.
Stolpec mora biti homogeno zapolnjen, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

Skladnja:


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

Parametri:

Array_1D: polje za razvrščanje.

RowIndex: indeks stolpca, glede na katerega bodo razvrščene vrstice.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

Primer:


      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

Zamenja vrstice in stolpce v dvodimenzionalnem polju.

Skladnja:


      SF_Array.Transpose(Array_2D As Variant) As Variant
   

Parametri:

Array_2D: polje za transponiranje.

Primer:


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

TrimArray

Iz enodimenzionalnega polja odstrani vse vnose Null in Empty ter vnose ničelne dolžine.
Nizi so okrajšani s funkcijo LibreOffice Basic Trim().

Skladnja:


      SF_Array.TrimArray(Array_1D As Variant) As Variant
   

Parametri:

Array_1D: polje za pregled.

Primer:


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

Union

Tvori množico, kot ničelno polje, tako da izvede operacijo unije na obeh vhodnih poljih. Elementi rezultata izvirajo iz obeh polj.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

Skladnja:


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

Parametri:

Array1_1D: prvo vhodno polje.

Array2_1D: drugo vhodno polje.

CaseSensitive: samo če so polja izpolnjena z nizi, privzeto = False.

Primer:


      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

Sestavite množico enkratnih vrednosti, ki izhajajo iz vhodnega polja.
Vhodno polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

Skladnja:


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

Parametri:

Array_1D: vhodna matrika.

CaseSensitive: samo če je polje izpolnjeno z besedili oz. nizi, privzeto = False.

Primer:


      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
   
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!