Słužba ScriptForge.Array

Skići zběrku metodow za manipulaciju a přetworjenje matriksow z jednej dimensiju (wektory) a matriksy z dwěmaj dimensijomaj (matriksy). To operacije set, sortěrowanje, importowanje z a eksportowanje do tekstowych datajow wopřijima.

Matriksy z wjace hač dwěmaj dimensijomaj njedadźa so z metodami w tutej słužbje wužiwać, jeničke wuwzaće je metoda CountDims, kotraž matriksy z někajkejžkuli ličbu dimensijow akceptuje.

Matriksowe zapiski móža někajku hódnotu wobsahować, inkluziwnje (pod-)matriksy.

Wuwołanje słužby

Prjedy hač so słužba array wužiwa, dyrbi so biblioteka ScriptForge začitać přez:


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

Hdyž so biblioteka začita, so objekt SF_Array wutwori, kotryž da so wužiwać, zo by metody w słužbje Array wuwołał.

Slědowace kodowe šlipki rozdźělne móžnosće pokazuja, zo bychu metody w słužbje Array wuwołali (metoda Append so jako přikład wužiwa):


    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

Dokelž Python ma zatwarjenu podpěru za lisćiny a tupele, je najwjace metodow w słužbje Array jenož za skripty Basic k dispoziciji. Jeničke wuwzaće je ImportFromCSVFile, kotraž so w Basic kaž tež w Python podpěruje.


Lisćina metodow w słužbje 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

Prěni argument najwjace metodow je wotpowědny matriksowy objekt. Přepodawa so přeco po referency a wostawa njezměnjeny. Metody kaž Append, Prepend atd. nowy matriksowy objekt po swojim wuwjedźenju wróćeja.


Append

Připowěša ke kóncej zapodawanskeje matriksy zapiski, kotrež su jako argumenty nalistowane.

Syntaksa:

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

Parametry:

array_1d: Hižo eksistowaca matriks, móže prózdna być.

arg0, arg1, ...: Zapiski, kotrež so array_1d připowěšeja.

Přikład:


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

AppendColumn

Připowěša nowu špaltu naprawo wot dwudimensionalneje matriksy. Rezultowaca matriks na samsne delnje mjezy kaž spočatna dwudimensionalna matriks.

Syntaksa:

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

Parametry:

array_2: Hižo eksistowaca matriks, móže prózdna być. Jeli tuta matriks jenož jednu dimensiju ma, wobhladuje so jako prěnja špalta rezultowaceje dwudimensionalneje matriksy wobhladuje.

column: Jednodimensionalna matriks z telko zapiskami kaž su linki w array_2.

Přikład:


    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

Připowěsńće deleka na dwudimensionalnej matriksy nowu linku. Rezultowaca matriks ma samsne delnje mjezy kaž spočatna dwudimensionalna matriks.

Syntaksa:

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

Parametry:

array_2d: Hižo eksistowaca matriks, móže prózdna być. Jeli tuta matriks jednu dimensiju ma, wobhladuje so jako prěnja linka rezultowaceje dwudimensionalneje matriksy.

row: Jednodimensionalna matriks z telko zapiskami kaž su špalty w array_2d.

Přikład:


    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

Přepruwuje, hač jednodimensionalna matriks wěstu ličbu, tekst abo datum wobsahuje. Tekstowe přirunanje móže na wulkopisanje dźiwać abo nic.
Sortěrowane zapodawanske matriksy dyrbja so homogenje pjelnić, to rěka, wšě zapiski dyrbja skalary samsneho typa być (elementy Empty a Null su zakazane).
Wuslědk metody předwidźomny njeje, hdyž so matriks jako sortěrowana připowědźuje a we woprawdźitosći njeje.
Binarne pytanje so přewjedźe, hdyž matriks je sortěrowana, hewak so prosće wot horjeka do deleka skenuje a zapiski Empty a Null so ignoruja.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma skenować.

tofind: Ličba, datum abo znamješkowy rjećazk, kotrež so maja pytać.

casesensitive: Jenož za přirunanje znamješkowych rjećazkow (standard = false).

sortorder: Móže pak "ASC", "DESC" pak "" (njesortěrowany) być. Standardna hódnota je "".

Přikład:


    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

Składujće wobsah dwušpaltoweje matriksy do objekta ScriptForge.Dictionary.
Kluč so z prěnjeje špalty ekstrahuje, zapisk z druheje.

Syntaksa:

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

Parametry:

array_2d: Daty, kotrež so maja do objekta ScriptForge.Dictionary přetworić.

Přikład:


    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

Wutworja kopiju jedno- abo dwudimensionalneje matriksy.

Syntaksa:

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

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

Parametry:

array_nd: Jedno- abo dwudimensionalna matriks, kotraž so ma kopěrować.

Přikład:

Jednore připokazanje objekta Array swoju referencu kopěruje, město toho zo by kopiju wobsaha objekta wutworiło. Hlejće slědowacy přikład:


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Slědowace připokazanje so přez referencu přewjedźe
    b = a
    ' Tohodla so tež "a" změni, hdyž so "b" změni
    b(0) = 10
    MsgBox a(0) ' 10
  

Hdyž so metoda Copy wužiwa, so kopija cyłeho objekta Array wutworja. W slědowacym přikładźe stej a a b rozdźělnej objektaj a hdyž hódnoty w b změniće, so to na hódnoty w a njewuskutkuje.


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Wutworja kopiju "a" z pomocu metody "Copy"
    b = SF_Array.Copy(a)
    b(0) = 10
    MsgBox a(0) ' 1
  

CountDims

Liči ličbu dimensijow matriksy. Wuslědk móže wjetši hač dwaj być.
Jeli argument matriks njeje, so -1 wróći.
Jeli matriks njeje inicializowana, so 0 wróći.

Syntaksa:

svc.CountDims(array_nd: any): int

Parametry:

array_nd: Matriks, kotraž so ma přepytować.

Přikład:


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

Difference

Wutworja sadźbu jako matriks na bazy nula přez to, zo diferencny operator na dwě zapodawanskej matriksy nałožuje. Rezultowace zapiski z prěnjeje matriksy pochadźeja a nic z druheje.
Rezultowaca matriks so w postupowacym porjedźe sortěruje.
Wobě zapodawanskej matriksy dyrbitej so homogenje pjelnić, jeju zapiski dyrbja skalary samsneho typa być. ZapiskiEmpty a Null su zakazane.
Tekstowe přirunanje móže na wulkopisanje dźiwać abo nic.

Syntaksa:

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

Parametry:

array_1d: Jednodimensionalna referencna matriks, kotrejež zapiski so za wotstronjenjom přepytuja.

array2_1d: Jednodimensionalny matriks, kotrejež zapiski so wot prěnjeje zapodawanskeje matriksy subtrahuja.

casesensitive: Tutón argument je jenož nałožujomny, jeli su matriksy ze znamješkowymi rjećazkami wupjelnjene (standard = false).

Přikład:


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

ExportToTextFile

Pisa wšě zapiski matriksy jedyn za druhim do tekstoweje dataje. Jeli dataja hižo eksistuje, budźe so bjez warnowanja přepisować.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma eksportować. Smě jenož znamješkowe rjećazki wobsahować.

filename: Mjeno tekstoweje dataje, do kotrejež so daty pisaja. Mjeno dyrbi so po aktualnej kajkosći FileNaming słužby SF_FileSystem zwuraznić.

encoding: Znamješkowa sadźba, kotraž měła so wužiwać. Wužiwajće jedne z mjenow, kotrež su w znamješkowych sadźbachIANA nalistowane. Dźiwajće na to, zo LibreOffice njemóže wšě eksistowace znamješkowe sadźby (standard je "UTF-8") implementować.

Přikład:


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

ExtractColumn

Ekstrahuje wěstu špaltu z dwudimensionalneje matriksy jako nowu matriks.
Jeje delnja mjeza LBound a hornja mjeza UBound stej tymaj prěnjeje dimensije zapodawanskeje matriksy identiskej.

Syntaksa:

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

Parametry:

array_2d: Matriks, z kotrejež so ma ekstrahować.

columnindex: Ličba špalty, kotraž so ma ekstrahować – dyrbi w interwalu [LBound, UBound] być.

Přikład:


    ' Wutworja matriks 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))
    ' Ekstrahuje třeću špaltu: |3, 6, 9|
    col = SF_Array.ExtractColumn(mat, 2)
  

ExtractRow

Ekstrahuje wěstu linku z dwudimensionalneje matriksy jako nowu matriks.
Jeje delnja mjeza LBound a hornja mjeza UBound stej tymaj druheje dimensije zapodawanskeje matriksy identiskej.

Syntaksa:

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

Parametry:

array_2d: Matriks, z kotrejež so ma ekstrahować.

rowindex: Ličba linki, kotraž so ma ekstrahować – dyrbi w interwalu [LBound, UBound] być.

Přikład:


    ' Wutworja matriks 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))
    ' Ekstrahuje prěnju linku: |1, 2, 3|
    row = SF_Array.ExtractRow(mat, 0)
  

Flatten

Stapluje wšě jednotliwe zapiski matriksy a wšě zapiski w jeje podmatriksach do jedneje noweje matriksy bjez podmatriksow. Prózdne podmatriksy so ignoruja a podmatriksy z ličbu dimensijow, kotraž je wjetša hač jedna, so wopłonjeja.

Syntaksa:

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

Parametry:

array_1d: Hižo eksistowaca matriks, móže prózdna być.

Přikład:


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

Móžeće metodu Flatten hromadźe z druhimi metodami kaž Append abo Prepend wužiwać, zo byšće sadźbu jednodimensionalnych matriksow do jednotliweje jednodimensionalneje matriksy zwjazał.


Přikład:

Přichodny je přikład za to, kak metodźe Flatten a Append datej so kombinować, zo bychu so tři matriksy zwjazali.


    ' Wutworja tři matriksy za tutón přikład
    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)
    ' Zwjazuje tři matriksy do jednotliweje jednodimensionalneje matriksy
    Dim arr as Variant
    arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
    '(1, 2, 3, 4, 5, 6, 7, 8, 9)
  

ImportFromCSVFile

Importuje daty, kotrež su w dataji z přez komu wotdźělenymi hódnotami (CSV) wobsahowane. Koma dyrbi so přez druhe znamješko wuměnić.

Nałožujomny format CSV so w IETF Common Format and MIME Type for CSV Files wopisuje.

Kóžda linka w dataji połnu datowu sadźbu wobsahuje (dźělenje linkow dowolene njeje).
Ale sekwency kaž \n, \t, … njezměnjene wostawaja. Wužiwajće metodu SF_String.Unescape(), zo byšće je rjadował.

Metoda dwudimensionalnu matriks wróća, kotrejež linki jednotliwej datowej sadźbje wotpowěduja, kotraž je so w dataji čitała a kotrejež špalty polu datoweje sadźby wotpowěduja. Koherenca pólnych typow so přez špalty njepřepruwuje. Čini so najlěpše móžne trochowanje, zo bychu so numeriske a datumowe typy identifikowali.

Jeli linka mjenje abo wjace polow hač prěnja linka w dataji wobsahuje, so wuwzaće wuwabi. Prózdne linki wšak so prosće ignoruja. Jeli wulkosć dataje ličbu zapiskow překročuje (hlejće w kodźe), so warnowanje wuwabi a matriks so wotrěza.

Syntaksa:

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

Parametry:

filename: Mjeno tekstoweje dataje, kotraž daty wobsahuje. Mjeno dyrbi so po aktualnej kajkosći FileNaming słužby SF_FileSystem zwuraznić.

delimiter: Jednotliwe znamješko, zwjetša koma, semikolon abo tabulatorowe znamješko (standard = ",").

dateformat: Specialny mechanizm z datumami wobchadźa, hdyž dateformat je pak "LLLL-MM-DD", "DD-MM-LLLL" pak "MM-DD-LLLL". Wjazawka (-) da so z dypkom (.), nakósnej smužku (/) abo mjezotu wuměnić. Druhe datumowe formaty so ignoruja. Datumy, kotrež su po standardźe prózdny znamješkowy rjećazk ""m so jako normalny tekst wobhladuja.

Přikład:

Wobhladajće sej dataju CSV "myFile.csv" ze slědowacym wobsahom:

Mjeno,narodnydźeń,adresa,město

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

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

Slědowace přikłady w Basic a Python wobsah dataje CSV do objekta Array čitaja.

In Basic

    Dim arr As Variant
    arr = SF_Array.ImportFromCSVFile("C:\Temp\mojaDataja.csv", DateFormat := "YYYY/MM/DD")
    MsgBox arr(0, 3) ' Město
    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\mojaDataja.csv", dateformat = "YYYY/MM/DD")
    bas.MsgBox(arr[0][3]) # Město
    bas.MsgBox(arr[1][2]) # Rue de l'église, 21
    bas.MsgBox(arr[1][3]) # Toulouse
  

IndexOf

Pytajće w jednodimensionalnej matriksy za ličbu, znamješkowym rjećazkom abo datumom. Tekstowe přirunanje móže na wulkopisanje dźiwać abo nic.
Jeli so matriks sortěruje, dyrbi so homogenje pjelnić, štož rěka, zo wšě zapiski dyrbja skalary samsneho typa być (zapiski Empty a Null su zakazane).
Wuslědk metody je njepředwidźomny, hdyž so matriks jako sortěrowana připowědźuje a we woprawdźitosći njeje.
Binarne pytanje so na sortěrowane matriksy nałožuje. Hewak so matriksy prosće wot horjeka dele skenuja a zapiski Empty a Null so ignoruja.

Metoda LBound (zapodawanska matriks) – 1, jeli pytanje njeje wuspěšne było.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma skenować.

tofind: Ličba, datum abo znamješkowy rjećazk, kotrež so maja pytać.

casesensitive: Jenož za přirunanja znamješkowych rjećazkow (standard = false).

sortorder: Móže pak "ASC", "DESC" pak "" (njesortěrowany) być. Standardna hódnota je "".

Přikład:


    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

Zasadźuje zapiski, kotrež su jako argumenty nalistowany, před datym indeksom zapidawanskeje matriksy.
Argumenty so slepje zasadźuja. Kóždy z nich móhł pak skalar někajkeho typa pak podmatriks być.

Syntaksa:

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

Parametry:

array_1d: Hižo eksistowaca matriks, móže prózdna być.

before: Indeks, před kotrymž so ma zasadźić; dyrbi w interwalu [LBound, UBound + 1] być.

arg0, arg1, ...: Zapiski, kotrež so do array_1d zasadźuja.

Přikład:


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

InsertSorted

Zasadźuje nowy zapisk do sortěrowaneje matriksy na jeho městnje.
Matriks dyrbi so homogenje pjelnić, štož rěka, zo wšě zapiski dyrbja skalary samsneho typa być.
Zapiski Empty a Null su zakazane.

Syntaksa:

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

Parametry:

array_1d: Matriks, do kotrejež so hódnota zasadźi.

item: Skalarowa hódnota, kotraž so ma zasadźić, samsneho typa kaž eksistowace matriksowe zapiski.

sortorder: Móže pak "ASC" (standard) pak "DESC" być.

casesensitive: Jenož za přirunanja znamješkowych rjećazkow (standard = false).

Přikład:


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

Intersection

Wutworja sadźbu jako matriks na bazy nula přez to, zo so operator rězneho mnóstwa na dwě zapodawanskej matriksy nałožuje. Rezultowace zapiski su we woběmaj matriksomaj wobsahowanje.
Rezultowaca matriks so w postupowacym porjedźe sortěruje.
Wobě zapodawanskej matriksy dyrbitej so homogenje pjelnić, hinak prajene, wšě zapiski dyrbja skalary samsneho typa być. ZapiskiEmpty a Null su zakazane.
Tekstowe přirunanje móže na wulkopisanje dźiwać abo nic.

Syntaksa:

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

Parametry:

array1_1d: Prěnja zapodawanska matriks.

array2_1d: Druha zapodawanska matriks.

casesensitive: Nałožuje so na matriksy, kotrež su z tekstowymi zapiskami wupjelnjene (standard = false).

Přikład:


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

Join2D

Zwjazuje dwudimensionalnu matriks z dwěmaj dźělatkomaj, jedne za špalty, jedne za linki.

Syntaksa:

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

Parametry:

array_2d: Kóždy zapisk dyrbi pak tekst, ličba, datum abo Boolowa hódnota być.
Datumy so do formata LLLL-MM-DD hh:mm:ss přetworjeja.
Njepłaćiwe zapiski so ze znamješkowym rjećazkom z dołhosć nul wuměnjeja.

columndelimeter: Wotmjezuje kóždu špaltu (standard = Tab/Chr(9)).

rowdelimiter: Wotmjezuje kóždu linku (standard = LineFeed/Chr(10))

quote: Jeli True, so znamješkowe rjećazki z dwójnymi pazorkami škitaja. Standard je false.

Přikład:


    ' 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

Započina zapodawansku matriks ze zapiskami, kotrež su jako argumenty nalistowane.

Syntaksa:

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

Parametry:

array_1d: Hižo eksistowaca matriks, móže prózdna być.

arg0, arg1, ...: Lisćina zapiskow, kotrež so maja před array_1d być.

Přikład:


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

PrependColumn

Započina lěwy bok dwudimensionalneje matriksy z nowej špaltu. Rezultowaca matriks ma samsne delnje mjezy kaž spočatna dwudimensionalna matriks.

Syntaksa:

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

Parametry:

array_2d: Hižo eksistowaca matriks, móže prózdna być. Jeli tuta matriks ma jednu dimensiju, wobhladuje so jako poslednja špalta rezultowaceje dwudimensionalneje matriksy.

column: Jednodimensionalna matriks z telko zapiskami kaž su linki w array_2d.

Přikład:


    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

Započina dwudimensionalnu matriks z nowej linku. Rezultowaca matriks ma samsne delnje mjez kaž spočatna dwudimensionalna matriks.

Syntaksa:

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

Parametry:

array_2d: Hižo eksistowaca matriks, móže prózdna być. Jeli tuta matriks ma jednu dimensiju, wobhladuje so jako prěnja linka rezultowaceje dwudimensionalneje matriksy.

row: Jednodimensionalna matriks, kotraž telko zapiski wobsahuje kaž su špalty w array_2d.

Přikład:


    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

Inicializuje nowu matriks na bazy nule z numeriskimi hódnotami.

Syntaksa:

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

Parametry:

from: Hódnota prěnjeho zapiska.

uptp: Posledni zapisk njeměł UpTo překročić.

bystep: Diferenca mjez dwěmaj na so sćěhowacymaj zapiskomaj (standard = 1).

Přikład:


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

Reverse

Wróći nawopačnu jednodimensionalnu zapodawansku matriks.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so wobroćić.

Přikład:


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

Shuffle

Wróći připadnu permutaciju jednodimensionalneje matriksy.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma přeměšeć.

Přikład:


    Dim a As Variant
    a = SF_Array.Shuffle(Array(1, 2, 3, 4))
        ' Matriks "a" je nětko w připadnym porjedźe, na př. (2. 3, 1, 4)
  

Slice

Wróći podsadźbu jednodimensionalneje matriksy.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma dźělić.

from: Delni indeks w array_1d podmatriksy, kontraž so ma ekstrahować (from zapřijaty)

upto: Horni indeks w array_1d podmatriksy, kotraž so ma ekstrahować (upto zapřijaty). Standardna hódnota je hornja mjeza array_1d. Jeli upto < from , je wróćena matriks prózdna.

Přikład:


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

Sort

Sortěruje jednodimensionalnu matriks w postupowacym abo spadowacym porjedźe. Tekstowe přirunanja móža na wulkopisanje dźiwać abo nic.
Matriks dyrbi homogenje wupjelnjena być, to rěka, zo zapiski dyrbja skalary samsneho typa być.
Zapiski Empty a Null su dowolene. Po zwučenym wašnju je Empty < Null < někajka druha skalarowa hódnota.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma sortěrować.

sortorder: Móže pak "ASC" (standard) pak "DESC" być.

casesensitive: Jenož za přirunanja znamješkowych rjećazkow (standard = false).

Přikład:


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

SortColumns

Wróći permutaciju špaltow dwudimensionalneje matriksy, sortěrowane po hódnotami dateje linki.
Linka dyrbi homogenje wupjelnjena być, to rěka, zo wšě zapiski dyrbja skalary samsneho typa być.
Zapiski Empty a Null su dowolene. Po zwučenym wašnju je Empty < Null < někajka druha skalarowa hódnota.

Syntaksa:

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

Parametry:

array_2d: Dwudimensionalna matriks, kotraž so ma sortěrować.

rowindex: Indeks linki, kotraž budźe so jako referenca za sortěrowanje špaltow wužiwać.

sortorder: Móže pak "ASC" (standard) pak "DESC" być.

casesensitive: Jenož za přirunanja znamješkowych rjećazkow (standard = false).

Přikład:


    ' 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

Wróći permutaciju linkow dwudimensionalneje matriksy, sortěrowane po hódnotami dateje špalty.
Špalta dyrbi homogenje wupjelnjena być, to rěka, zo wšě zapiski dyrbja skalary samsneho typa być.
Zapiski Empty a Null su dowolene. Po zwučenym wašnju je Empty < Null < někajka druha skalarowa hódnota.

Syntaksa:

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

Parametry:

array_2d: Matriks, kotraž so ma sortěrować.

columnindex: Indeks špalty, kotraž budźe so jako referenca za sortěrowanje linkow wužiwać.

sortorder: Móže pak "ASC" (standard) pak "DESC" być.

casesensitive: Jenož za přirunanja znamješkowych rjećazkow (standard = false).

Přikład:


    ' 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

Wuměnja linki a špalty w dwudimensionalnej matriksy.

Syntaksa:

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

Parametry:

array_2d: Dwudimensionalna matriks, kotraž so ma transponować.

Přikład:


    ' 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

Wotstronja wšě zapiski Null, Empty a zapiski z dołhosću nul z jednodimensionalneje matriksy.
Zapiski znamješkowych rjećazkow so z funkciju LibreOffice Basic Trim() přirězuja.

Syntaksa:

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

Parametry:

array_1d: Matriks, kotraž so ma přirězać.

Přikład:


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

Union

Wutworja sadźbu jako matriks na bazy nula přez to, zo zjednoćenski operator na dwě zapodawanskej matriksy nałožuje. Rezultowace zapiski z wobeju matriksow pochadźeja.
Rezultowaca matriks so w postupowacym porjedźe sortěruje.
Wobě zapodawanskej matriksy dyrbitej homogenje wupjelnenej być, jeju zapiski dyrbja skalary samsneho typa być. ZapiskiEmpty a Null su zakazane.
Tekstowe přirunanje móže na wulkopisanje dźiwać abo nic.

Syntaksa:

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

Parametry:

array1_1d: Prěnja zapodawanska matriks.

array2_1d: Druha zapodawanska matriks.

casesensitive: Jenož nałožujomny, jeli matriksy su ze znamješkowymi rjećazkami wupjelnjene (standard = false).

Přikład:


    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

Wutworja sadźbu jónkróćnych hódnotow, kotrež su wot zapodawanskeje matriksy wotwodźene.
Zapodawanska matriks dyrbi homogenje wupjelnjene być, jeje zapiski dyrbja skalary samsneho typa być. Zapiski Empty a Null su zakazane.
Tekstowe přirunanja móža na wulkopisanje dźiwać abo nic.

Syntaksa:

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

Parametry:

array_1d: Zapodawanska matriks.

casesensitive: Jenož nałožujomny, jeli matriks je ze znamješkowymi rjećazkami wupjelnjena (standard = false).

Přikład:


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

Wšě rutiny Basic ScriptForge abo identifikatory, kotrež so z podsmužku „_“ započinaja, su za interne wužiwanje wuměnjene. Njejsu za to myslene, so w makrach Basic abo skriptach Python wužiwać.


Prošu podpěrajće nas!