Služba ScriptForge.Array (SF_Array)

Obsah
Rejstřík 🔎︎

# 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(...)

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

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

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

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.

Související témata

Maticové funkce

Volání funkcí Calcu

Služba ScriptForge.Dictionary