Služba ScriptForge.Array

Poskytuje sadu metod pro manipulaci s jednorozměrnými poli (vektory) a dvourozměrnými poli (maticemi) a jejich transformaci. Mezi ně patří množinové operace, řazení, import z textových souborů a import do nich.

Pole s více než dvěma rozměry nelze pomocí metod této služby používat, jedinou výjimkou je metoda CountDims, která přijímá pole s libovolným počtem rozměrů.

Položky polí mohou obsahovat jakýkoliv typ hodnoty, a to včetně dalších polí.

Volání služby

Před používáním služby Array je nutné načíst knihovnu ScriptForge pomocí:


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
   

Načtení knihovny vytvoří objekt SF_Array, který lze používat pro volání metod služby Array.

Následující části kódu ukazují různé způsoby volání metod služby Array (jako příklad je uvedena metoda Append):


      SF_Array.Append(...)
   

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

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

Metoda CreateScriptService je k dispozici pouze po načtení knihovny ScriptForge.


Metody

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

Prvním argumentem většiny metod je objekt pole, s nímž se má pracovat. Vždy je předáván odkazem a metody jej nemění. Metody jako Append, Prepend apod. vracejí po provedení nový objekt pole.


Append

Přidá položky uvedené jako argumenty na konec vstupního pole.

Syntaxe:


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

Parametry:

Array_1D: Předem existující pole, může být prázdné.

arg0, ... : položky, které se mají k poli Array_1D připojit.

Příklad:


      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

Přidá na pravou stranu dvourozměrného pole nový sloupec. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.

Syntaxe:


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

Parametry:

Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první sloupec výsledného dvourozměrného pole.

New_Column: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.

Příklad:


      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

Přidá do dolní části dvourozměrného pole nový řádek. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.

Syntaxe:


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

Parametry:

Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první řádek výsledného dvourozměrného pole.

Row: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.

Příklad:


      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

Ověří, zda jednorozměrné pole obsahuje určité číslo, text nebo datum. U porovnání textu se může či nemusí rozlišovat velikost písmen.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu (položky Empty a Null nejsou povoleny).
Výsledek metody nelze určit, pokud je pole označeno jako seřazené, ale ve skutečnosti seřazeno není.
Je-li pole seřazeno, provede se binární vyhledávání, v opačném případě se pole prohledá od začátku do konce, přičemž položky Empty a Null se ignorují.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má prohledat.

ToFind: Číslo, datum nebo řetězec, který se má najít.

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

SortOrder : "ASC", "DESC" nebo "" (= neseřazeno, výchozí)

Příklad:


      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

Uloží obsah dvourozměrného pole do objektu ScriptForge.Dictionary.
Klíče budou získány z prvního sloupce, položky z druhého.

Syntaxe:


      SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
   

Parametry:

Array_1D: první sloupec musí obsahovat výhradně řetězce s délkou větší než nula, a to v jakémkoliv pořadí.

Příklad:


      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

Spočítá rozměry pole. Výsledek může být větší než 2.
Pokud není argumentem pole, vrátí -1.
Pokud není pole inicializováno, vrátí 0.

Syntaxe:


      SF_Array.CountDims(Array_ND As Variant) As Integer
   

Parametry:

Array_ND: Pole, které se má prozkoumat.

Příklad:


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

Difference

Použije operátor rozdílu na dvě vstupní pole a vytvoří tak množinu v podobě pole začínajícího od 0. Výsledné položky pocházejí z prvního pole, nikoliv ze druhého.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.

Syntaxe:


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

Parametry:

Array1_1D: Referenční jednorozměrné pole, pro jehož položky se bude zjišťovat, zda mají být odstraněny.

Array2_1D: Jednorozměrné pole, jehož položky se od prvního vstupního pole odčítají.

CaseSensitive: Použitelné pouze tehdy, obsahují-li pole řetězce (výchozí = False).

Příklad:


      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

Postupně zapíše všechny položky pole do textového souboru. Pokud již soubor existuje, bez upozornění je přepsán.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má exportovat. Může obsahovat pouze řetězce.

FileName: Název textového souboru obsahujícího data. Název musí odpovídat aktuální vlastnosti FileNaming ze služby SF_FileSystem. Výchozí = jakýkoliv. (Platné jsou jako formát URL, tak nativní formát operačního systému.)

Encoding: Znaková sada, která by se měla použít. Uveďte některý z názvů ze seznamu znakových sad IANA. Mějte na paměti, že v LibreOffice nemusí být všechny znakové sady implementovány. Výchozí je "UTF-8".

Příklad:


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

ExtractColumn

Získá z dvourozměrného pole určitý sloupec jako nové pole.
Meze nového pole, dolní LBound a horní UBound, jsou totožné s mezemi prvního rozměru vstupního pole.

Syntaxe:


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

Parametry:

Array_2D: Pole, z něhož se má sloupec získat.

ColumnIndex: Číslo sloupce, který se má získat - musí být v intervalu [LBound, UBound].

Příklad:


      Sub Example_ExtractColumn
         ' Vytvoří matici 3 × 3: |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))
         ' Získá třetí sloupec: [3, 6, 9]
         col = SF_Array.ExtractColumn(mat, 2)
      End Sub
   

ExtractRow

Získá z dvourozměrného pole určitý řádek jako nové pole.
Meze nového pole, dolní LBound a horní UBound, jsou totožné s mezemi druhého rozměru vstupního pole.

Syntaxe:


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

Parametry:

Array_2D: Pole, z něhož se má řádek získat.

RowIndex: Číslo řádku, který se má získat - musí být v intervalu [LBound, UBound].

Příklad:


      Sub Example_ExtractRow
         ' Vytvoří matici 3 × 3: |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))
         ' Získá první řádek: |1, 2, 3|
         row = SF_Array.ExtractRow(mat, 0)
      End Sub
   

Flatten

Uspořádá všechny jednotlivé položky pole a položky všech jeho podpolí do nového pole, které podpole neobsahuje. Prázdná podpole se ignorují, podpole s více rozměry než jedním zjednodušena nejsou.

Syntaxe:


      SF_Array.Flatten(Array_1D As Variant) As Variant
   

Parametry:

Array_1D: Předem existující pole, může být prázdné.

Příklad:


      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

Metodu Flatten je možné spolu s metodami jako Append či Prepend použít pro spojení více jednorozměrných polí do jediného jednorozměrného pole.


Příklad:

Následuje příklad spojení tří polí zkombinováním metod Flatten a Append.


      Sub Concatenate_Example
         ' Vytvoří pro tento příklad tři pole
         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)
         ' Spojí tři pole do jediného jednorozměrného
         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

Naimportuje data ze souboru s hodnotami oddělenými čárkou (CSV). Čárku lze nahradit libovolným znakem.

Formát CSV, který je možné použít, je popsán v dookumentu IETF Common Format and MIME Type for CSV Files.

Každý řádek souboru obsahuje úplný záznam (není povoleno řádky dělit).
Posloupnosti znaků jako \n, \t apod. jsou ponechány beze změny. Chcete-li je zpracovat, použijte metodu SF_String.Unescape().

Metoda vrátí dvourozměrné pole s řádky odpovídajícími záznamům načteným ze souboru a sloupci odpovídajícími jednotlivým polím záznamů. Nekontroluje se, zda jsou ve sloupcích konzistentní typy polí. Kvalifikovaným odhadem se určí číselné a datové typy.

Obsahuje-li řádek více polí než první řádek v souboru, nastane chyba. Prázdné řádky se jednoduše ignorují. Pokud velikost souboru převýší limit pro počet položek (uvedený v kódu), dojde k upozornění a pole se zkrátí.

Syntaxe:


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

Parametry:

FileName: Název textového souboru obsahujícího data. Název musí odpovídat aktuální vlastnosti FileNaming ze služby SF_FileSystem. Výchozí = jakýkoliv. (Platné jsou jako formát URL, tak nativní formát operačního systému.)

Delimiter: Jediný znak, obvykle čárka, středník nebo tabulátor. Výchozí = ",".

DateFormat: Pokud je dateformat "YYYY-MM-DD", "DD-MM-YYYY" či "MM-DD-YYYY", zpracují se data speciálním způsobem. Pomlčku (-) lze nahradit tečkou (.), lomítkem (/) nebo mezerou. Jiné formáty data se ignorují. Data, která odpovídají prázdnému řetězci "", jsou považována za běžný text.

Příklad:

K dispozici je tento soubor 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

Vyhledá v jednorozměrném poli číslo, řetězec nebo datum. U porovnání textu se může či nemusí rozlišovat velikost písmen.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu (položky Empty a Null nejsou povoleny).
Výsledek metody nelze určit, pokud je pole označeno jako seřazené, ale ve skutečnosti seřazeno není.
Je-li pole seřazeno, provede se binární vyhledávání, v opačném případě se pole prohledá od začátku do konce, přičemž položky Empty a Null se ignorují.

Pokud není hledání úspěšné, metoda vrátí LBound(input array) - 1.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má prohledat.

ToFind: Číslo, datum nebo řetězec, který se má najít.

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

SortOrder : "ASC", "DESC" nebo "" (= neseřazeno, výchozí)

Příklad:


      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

Vloží před zadaný index vstupního pole položky uvedené jako argumenty.
Argumenty se vkládají bez jakékoliv kontroly. Každý z nich může být buď skalár libovolného typu, nebo podpole.

Syntaxe:


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

Parametry:

Array_1D: Předem existující pole, může být prázdné.

Before: Index, před který se položky vloží; musí být v intervalu [LBound, UBound + 1].

arg0, ...: Seznam položek, které se mají do pole Array_1D vložit.

Příklad:


      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

Vloží do seřazeného pole na správné místo novou položku.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null nejsou povoleny.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má seřadit.

Item: Skalární hodnota, která se má vložit, téhož typu jako stávající položky pole.

SortOrder : "ASC" (výchozí) nebo "DESC".

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

Příklad:


      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

Použije na dvě vstupní pole množinový operátor průniku a vytvoří tak novou množinu v podobě pole začínajícího od 0. Výsledné položky jsou obsaženy v obou polích.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.

Syntaxe:


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

Parametry:

Array1_1D: První vstupní pole.

Array2_1D: Druhé vstupní pole.

CaseSensitive: Týká se polí s textovými položkami (výchozí = False).

Příklad:


      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

Spojí položky dvourozměrného pole dvěma oddělovači, prvním mezi sloupci, druhým mezi řádky.

Syntaxe:


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

Parametry:

Array_2D: Každá položka musí být text, číslo, datum nebo booleovská hodnota.
Data jsou převedena na formát YYYY-MM-DD hh:mm:ss.
Neplatné položky jsou nahrazeny řetězci s nulovou délkou.

ColumnDelimiter: Odděluje sloupce (výchozí = tabulátor/Chr(9)).

RowDelimiter: Odděluje řádky (výchozí = konec řádku LF / Chr(10))

Quote: Je-li True, uzavře řetězce do dvojitých uvozovek. Výchozí je False.

Příklad:


      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

Přidá položky uvedené jako argumenty na začátek vstupního pole.

Syntaxe:


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

Parametry:

Array_1D: Předem existující pole, může být prázdné.

arg0, ...: Seznam položek, které se mají k poli Array_1D přidat.

Příklad:


      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

Přidá na levou stranu dvourozměrného pole nový sloupec. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.

Syntaxe:


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

Parametry:

Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za poslední řádek výsledného dvourozměrného pole.

Column: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.

Příklad:


      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

Přidá na začátek dvourozměrného pole nový řádek. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.

Syntaxe:


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

Parametry:

Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první řádek výsledného dvourozměrného pole.

Row: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.

Příklad:


      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

Inicializuje číselnými hodnotami nové pole začínající od 0.

Syntaxe:


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

Parametry:

From: Hodnota první položky.

UpTo: Poslední položka by neměla být větší než UpTo.

ByStep: Rozdíl mezi dvěma po sobě následujícími položkami (výchozí = 1).

Příklad:


      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

Vrátí obrácené jednorozměrné vstupní pole.

Syntaxe:


      SF_Array.Reverse(Array_1D As Variant) As Variant
   

Parametry:

Array_1D: Pole, které se má obrátit.

Příklad:


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

Shuffle

Vrátí náhodnou permutaci jednorozměrného pole.

Syntaxe:


      SF_Array.Shuffle(Array_1D As Variant) As Variant
   

Parametry:

Array_1D: Pole, jehož permutace se má vytvořit.

Příklad:


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

Slice

Vrátí podmnožinu jednorozměrného pole.

Syntaxe:


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

Parametry:

Array_1D: Pole, jehož podmnožina se má vrátit.

From: Dolní index pole Array_1D, od něhož se má podpole získat (včetně indexu From)

UpTo: Horní index pole Array_1D, do něhož se má podpole získat (včetně indexu UpTo). Výchozí hodnotou je horní mez pole Array_1D. Je-li UpTo < From, vrátí se prázdné pole.

Příklad:


      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

Seřadí jednorozměrné pole vzestupně nebo sestupně. Při porovnávání textů se může či nemusí rozlišovat velikost písmen.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má seřadit.

SortOrder : "ASC" (výchozí) nebo "DESC".

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

Příklad:


      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

Vrátí permutaci sloupců dvourozměrného pole, seřazenou podle hodnot v zadaném řádku.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má seřadit.

RowIndex: Index řádku, který bude pro řazení sloupců použit.

SortOrder : "ASC" (výchozí) nebo "DESC".

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

Příklad:


      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

Vrátí permutaci řádků dvourozměrného pole, seřazenou podle hodnot v zadaném sloupci.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.

Syntaxe:


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

Parametry:

Array_1D: Pole, které se má seřadit.

ColumnIndex: Index sloupce, který bude pro řazení řádků použit.

SortOrder : "ASC" (výchozí) nebo "DESC".

CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).

Příklad:


      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

Prohodí v dvourozměrném poli řádky a sloupce.

Syntaxe:


      SF_Array.Transpose(Array_2D As Variant) As Variant
   

Parametry:

Array_2D : Pole, které se má transponovat.

Příklad:


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

TrimArray

Odstraní z jednorozměrného pole všechny položky s nulovou délkou a s hodnotami Null, Empty.
Řetězce v položkách budou oříznuty funkcí LibreOffice Basic Trim().

Syntaxe:


      SF_Array.TrimArray(Array_1D As Variant) As Variant
   

Parametry:

Array_1D: Pole, které se má prohledat.

Příklad:


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

Union

Použije operátor sjednocení na dvě vstupní pole a vytvoří tak množinu v podobě pole začínajícího od 0. Výsledné položky mohou pocházet z obou polí.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.

Syntaxe:


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

Parametry:

Array1_1D: První vstupní pole.

Array2_1D: Druhé vstupní pole.

CaseSensitive: Použitelné pouze tehdy, obsahují-li pole řetězce (výchozí = False).

Příklad:


      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

Vytvoří ze vstupního pole množinu jedinečných hodnot.
Vstupní pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.

Syntaxe:


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

Parametry:

Array_1D: Vstupní pole.

CaseSensitive: Použitelné pouze tehdy, obsahují-li pole texty (výchozí = False).

Příklad:


      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

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu.