Contenu

# ScriptForge. Service Array

Fournit une collection de méthodes pour manipuler et transformer des matrices à une dimension (vecteurs) et des matrices à deux dimensions (matrices). Cela inclut les opérations d'ensemble, le tri, l'import depuis et l'export vers des fichiers texte.

Les matrices avec plus de deux dimensions ne peuvent pas être utilisées avec les méthodes de ce service, la seule exception étant la méthode CountDims qui accepte les matrices avec un nombre quelconque de dimensions.

Les éléments de matrice peuvent contenir n'importe quel type de valeur, y compris des (sous) matrices.

## Invocation du service

Avant de pouvoir utiliser le service Array, la bibliothèque ScriptForge doit être chargée en utilisant :

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Charger la bibliothèque créera l'objet SF_Array qui peut être utilisé pour appeler les méthode dans le service Array.

Les extraits de code suivants montrent les différentes façons d'appeler des méthodes dans le service Array (la méthode Append est utilisée comme exemple) :

        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)

Étant donné que Python a une prise en charge intégrée des listes et des tuples, la plupart des méthodes du service Array sont disponibles uniquement pour les scripts de base. La seule exception est ImportFromCSVFile qui est pris en charge à la fois par Basic et Python.

Liste des méthodes dans le service 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

Le premier argument de la plupart des méthodes est l'objet matrice à prendre en compte. Il est toujours passé par référence et laissé inchangé. Les méthodes telles que Append, Prepend, etc. renvoient un nouvel objet matrice après leur exécution.

## Append

Ajoute les éléments répertoriés comme arguments à la fin de la matrice d'entrée.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice pré-existante, elle peut être vide.

arg0, arg1, ... : éléments qui seront ajoutés à array_1d.

### Exemple :

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

## AppendColumn

Ajoute une nouvelle colonne sur le côté droit d'une matrice à deux dimensions. La matrice résultante a les mêmes limites inférieures que la matrice bidimensionnelle initiale.

### Syntaxe :

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

### Paramètres :

array_2d : la matrice préexistante, elle peut être vide. Si cette matrice n'a qu'une dimension, elle est considérée comme la première colonne de la matrice bidimensionnelle résultante.

column : une matrice à 1 dimension avec autant d'éléments qu'il y a de lignes dans array_2D.

### Exemple :

        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

Ajoutez une nouvelle ligne au bas d'une matrice à deux dimensions. La matrice résultante a les mêmes limites inférieures que la matrice initiale à deux dimensions.

### Syntaxe :

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

### Paramètres :

array_2D: la matrice préexistante, elle peut être vide. Si cette matrice a 1 dimension, elle est considérée comme la première ligne de la matrice à 2 dimensions résultante.

ligne : une matrice à 1 dimension avec autant d'éléments qu'il y a de colonnes dans array_2D.

### Exemple :

        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

Vérifier si une matrice à une dimension contient un certain nombre, du texte ou une date. La comparaison de texte peut être sensible à la casse ou non.
Les matrices d'entrée triées doivent être remplies de manière homogène, ce qui signifie que tous les éléments doivent être des scalaires du même type (les éléments Empty et Null sont interdits).
Le résultat de la méthode est imprévisible lorsque la matrice est annoncée comme triée et ne l'est pas en réalité.
Une recherche binaire est effectuée lorsque la matrice est triée, sinon, elle est simplement parcourue de haut en bas et les éléments Empty et Null sont ignorés.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice à parcourir.

tofind : un nombre, une date ou une chaîne à trouver.

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

sortorder: cela peut être "ASC", "DESC" ou "" (non trié). La valeur par défaut est "".

### Exemple :

        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

Stocker le contenu d'une matrice de deux colonnes dans un objet ScriptForge.Dictionary .
Les clés seront extraites de la première colonne et les éléments de la seconde.

### Syntaxe :

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

### Paramètres :

array_2d : données à convertir en un objet ScriptForge.Dictionary.

- La première colonne doit contenir exclusivement des chaînes d'une longueur supérieure à zéro, dans n'importe quel ordre. Ces valeurs seront utilisées comme étiquettes dans le dictionnaire.

- La deuxième colonne contient les données qui seront associées à l'étiquette correspondante dans le dictionnaire.

### Exemple :

        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

Crée une copie d'une matrice 1D ou 2D.

### Syntaxe :

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

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

### Paramètres :

array_nd : La matrice 1D ou 2D à copier.

### Exemple :

Une simple affectation d'un objet Array copiera sa référence au lieu de créer une copie du contenu de l'objet. Voir l'exemple ci-dessous :

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' L'assignation ci-dessous est faite par référence
        b = a
        ' Par conséquent, changer les valeurs dans "b" changera également "a"
        b(0) = 10
        MsgBox a(0) ' 10

En utilisant la méthode Copy, une copie de l'ensemble de l'objet Array est effectuée. Dans l'exemple ci-dessous, a et b sont des objets différents et la modification des valeurs dans b n'affectera pas les valeurs dans a .

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' Crée une copie de "a" en utilisant la méthode "Copy"
        b = SF_Array.Copy(a)
        b(0) = 10
        MsgBox a(0) ' 1

## CountDims

Compter le nombre de dimensions d'une matrice. Le résultat peut être supérieur à deux.
Si l'argument n'est pas une matrice, renvoie -1
Si la matrice n'est pas initialisée, renvoie 0.

### Syntaxe :

svc.CountDims(array_nd: any): int

### Paramètres :

array_nd : la matrice à examiner.

### Exemple :

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

## Difference

Construisez un ensemble, dont la matrice est basée sur 0, en utilisant l'opérateur de différence sur les deux matrices d'entrée. Les éléments résultants viendront du premier tableau et non du second.
La matrice résultante est triée par ordre croissant.
Les deux matrices d'entrée doivent être remplies avec homogénéité, leurs éléments doivent être des scalaires de même type. Les valeurs Empty et Null ne sont pas permises.
La comparaison de texte peut être sensible à la casse ou non.

### Syntaxe :

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

### Paramètres :

array1_1D : une matrice de référence à 1 dimension, dont les éléments sont examinés pour suppression.

array2_1D : une matrice de 1 dimension, dont les éléments sont soustraits de la première matrice saisie.

casesensitive : cet argument n'est applicable que si les matrices sont remplies de chaînes (par défaut = False).

### Exemple :

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

## ExportToTextFile

Écrivez tous les éléments du tableau de manière séquentielle dans un fichier texte. Si le fichier existe déjà, il sera écrasé sans avertissement.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice à exporter. Elle ne doit contenir que des chaînes.

filename : le nom du fichier texte dans lequel les données seront écrites. Le nom doit être exprimé selon la propriété FileNaming actuelle du service SF_FileSystem.

encoding : le jeu de caractères qui doit être utilisé. Utilisez l'un des noms listés dans IANA character sets. Remarquez que LibreOffice peut ne pas implémenter tous les jeux de caractères existants (par défaut, c'est "UTF-8").

### Exemple :

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

## ExtractColumn

Extraire d'une matrice à deux dimensions une colonne spécifique en tant que nouvelle matrice.
Ses limites inférieures LBound et supérieures UBound sont identiques à celles de la première dimension de la matrice d'entrée.

### Syntaxe :

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

### Paramètres :

array_2D : la matrice à partir de laquelle extraire.

columnIndex : Le numéro de colonne à extraire - cela doit être l'intervalle [LBound, UBound].

### Exemple :

        'Crée une matrice 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))
        'Extrait la troisième colonne : |3, 6, 9|
        col = SF_Array.ExtractColumn(mat, 2)

## ExtractRow

Extraire d'une matrice à deux dimensions une ligne spécifique en tant que nouvelle matrice.
Ses limites inférieures LBound et supérieures UBound sont identiques à celles de la deuxième dimension de la matrice d'entrée.

### Syntaxe :

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

### Paramètres :

array_2D : la matrice à partir de laquelle extraire.

rowIndex : le numéro de ligne à extraire - cela doit être dans l'intervalle [LBound, UBound].

### Exemple :

        'Crée une matrice 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))
        'Extrait la première ligne : |1, 2, 3|
        row = SF_Array.ExtractRow(mat, 0)

## Flatten

Empilez tous les éléments individuels d'une matrice et tous les éléments de ses sous-matrices dans une nouvelle matrice sans sous-matrice. Les sous-matrices vides sont ignorées et les sous-matrices avec un nombre de dimensions supérieur à un ne sont pas aplaties.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice pré-existante, elle peut être vide.

### Exemple :

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

Vous pouvez utiliser la méthode Flatten en même temps que d'autres méthodes telles que Append ou Prepend pour concaténer un ensemble de matrices 1D en une seule matrice 1D.

### Exemple :

Vous trouverez ci-après un exemple de comment les méthodes Flatten et Append peuvent être combinées pour concaténer trois matrices.

        'Crée trois matrices pour cet exemple
        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)
        'Concatène les trois matrices en une seule matrice 1D
        Dim arr as Variant
        arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
        '(1, 2, 3, 4, 5, 6, 7, 8, 9)

## ImportFromCSVFile

Importez les données contenues dans un fichier dont les valeurs sont séparées par des virgules (CSV). Les virgules peuvent être remplacées par n'importe quel caractère.

Le format CSV applicable est décrit dans IETF Common Format and MIME Type for CSV Files.

Chaque ligne du fichier contient un enregistrement complet (séparer les lignes n'est pas autorisé).
Cependant, des séquences comme \n, \t, ... sont laissées inchangées. Utilisez la méthode SF_String.Unescape() pour les gérer.

La méthode renvoie une matrice à deux dimensions dont les lignes correspondent à un enregistrement unique lu dans un fichier dont les colonnes correspondent à un champ de l'enregistrement. Aucune vérification n'est faite quant à la cohérence des types de champs à travers les colonnes. Une meilleure estimation sera faite pour identifier les types numériques et de date.

Si une ligne contient plus ou moins de champs que la première ligne du fichier, une exception est levée. Cependant les lignes vides sont simplement ignorées. Si la taille du fichier excède le nombre de la limite d'éléments (voir à l'intérieur du code), un avertissement est levé et la matrice est tronquée.

### Syntaxe :

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

### Paramètres :

filename : le nom du fichier texte dans lequel les données seront écrites. Le nom doit être exprimé selon la propriété FileNaming actuelle du service SF_FileSystem.

delimiter : un seul caractère, généralement une virgule, un point-virgule ou un caractère TAB (par défaut = ",").

dateformat : un mécanisme spécial gère les dates lorsque dateformat est soit "AAAA-MM-JJ", "JJ-MM-AAAA" ou "MM-JJ-AAAA". Le tiret (-) peut être remplacé par un point (.), une barre oblique (/) ou un espace. Les autres formats de date seront ignorés. Les dates par défaut "" sont considérées comme du texte normal.

### Exemple :

Considérez le fichier CSV "myFile.csv" avec le contenu suivant :

Name,DateOfBirth,Address,City

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

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

Les exemples ci-dessous en Basic et Python lisent le contenu du fichier CSV dans un objet Array.

##### En Basic :

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

##### En Python

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

## IndexOf

Rechercher dans une matrice à une dimension un nombre, une chaîne ou une date. La comparaison de texte peut être sensible ou non à la casse.
Si la matrice est triée, elle doit être remplie de manière homogène, ce qui signifie que tous les éléments doivent être des scalaires du même type (les éléments Empty et Null sont interdits).
Le résultat de la méthode est imprévisible lorsque la matrice est annoncée comme triée et ne l'est pas en réalité.
Une recherche binaire est effectuée sur des matrices triées. Sinon, les matrices sont simplement analysées de haut en bas et les éléments Empty et Null sont ignorés.
La méthode renvoie LBound(input array) - 1 si la recherche n'a pas abouti.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice à parcourir.

tofind : un nombre, une date ou une chaîne à trouver.

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

sortorder: cela peut être "ASC", "DESC" ou "" (non trié). La valeur par défaut est "".

### Exemple :

        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

Insérez avant un index donné de la matrice d'entrée, les éléments répertoriés comme arguments.
Les arguments sont insérés à l'aveugle. Chacun d'eux peut être soit un scalaire de n'importe quel type, soit une sous-matrice.

### Syntaxe :

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

### Paramètres :

array_1D : la matrice pré-existante, elle peut être vide.

before : l'index avant lequel insérer ; il doit être dans l'intervalle [LBound, UBound + 1].

arg0, arg1, ... : les éléments qui seront insérés dans array_1d.

### Exemple :

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

## InsertSorted

Insère dans une matrice triée un nouvel élément à sa place.
La matrice doit être remplie de manière homogène, ce qui signifie que tous les éléments doivent être des scalaires du même type. Les éléments
Empty et Null sont interdits.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice dans laquelle la valeur sera insérée.

item : la valeur scalaire à insérer, du même type que les éléments de la matrice existants.

sortorder : il peut s'agir de "ASC" (par défaut) ou de "DESC".

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

### Exemple :

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

## Intersection

Construire un ensemble, en tant que matrice de base zéro, en appliquant l'opérateur d'ensemble d'intersection sur les deux matrices d'entrée. Les éléments résultants sont contenus dans les deux matrices.
La matrice résultante est triée par ordre croissant.
Les deux matrices d'entrée doivent être remplies de manière homogène, c'est-à-dire que tous les éléments doivent être des scalaires du même type. Les éléments Empty et Null sont interdits.
La comparaison de texte peut être sensible ou non à la casse.

### Syntaxe :

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

### Paramètres :

array1_1d : la première matrice de saisie.

array2_1d : la seconde matrice de saisie.

casesensitive : s'applique aux matrices peuplées avec des éléments de texte (par défaut = False).

### Exemple :

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

## Join2D

Joindre une matrice à deux dimensions avec deux délimiteurs, un pour les colonnes, un pour les lignes.

### Syntaxe :

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

### Paramètres :

array_2d : chaque élément doit être soit du texte, un nombre, une date ou un booléen.
Les dates sont transformées au format AAAA-MM-JJ hh:mm:ss.
Les éléments non valides sont remplacés par une chaîne de longueur nulle.

columndelimiter : délimite chaque colonne (par défaut = Tab/Chr(9)).

rowdelimiter: délimite chaque ligne (par défaut = LineFeed/Chr(10))

quote : si True, protège les chaînes à l'aide de guillemets doubles. La valeur par défaut est False.

### Exemple :

        ' 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

Ajouter au début de la matrice d'entrée les éléments répertoriés comme arguments.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice pré-existante, elle peut être vide.

arg0, arg1, ... : une liste d'éléments à ajouter à array_1d.

### Exemple :

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

## PrependColumn

Ajouter au côté gauche d'une matrice à deux dimensions une nouvelle colonne. La matrice résultante a les mêmes limites inférieures que la matrice initiale à deux dimensions.

### Syntaxe :

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

### Paramètres :

array_2d: la matrice préexistante, elle peut être vide. Si cette matrice a 1 dimension, elle est considérée comme la dernière colonne de la matrice à 2 dimensions résultante.

column : une matrice à 1 dimension avec autant d'éléments qu'il y a de lignes dans array_2D.

### Exemple :

        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

Ajouter une nouvelle ligne au début d'une matrice à deux dimensions. La matrice résultante a les mêmes limites inférieures que la matrice initiale à deux dimensions.

### Syntaxe :

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

### Paramètres :

array_2d: la matrice préexistante, elle peut être vide. Si cette matrice a 1 dimension, elle est considérée comme la dernière ligne de la matrice à 2 dimensions résultante.

row : une matrice à 1 dimension avec autant d'éléments qu'il y a de colonnes dans array_2d.

### Exemple :

        Dim a As Variant, b As variant
        a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
            ' ((4, 5, 6), (1, 2, 3))
        b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
            ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i

## RangeInit

Initialiser un nouveau tableau de base zéro avec des valeurs numériques.

### Syntaxe :

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

### Paramètres :

from : valeur du premier élément.

upto : le dernier élément ne doit pas excéder UpTo.

bystep : la différence entre deux éléments successifs (par défaut = 1).

### Exemple :

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

## Reverse

Renvoie la matrice d'entrée à une dimension inversée.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice à inverser.

### Exemple :

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

## Shuffle

Renvoie une permutation aléatoire d'une matrice à une dimension.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice à mélanger.

### Exemple :

        Dim a As Variant
        a = SF_Array.Shuffle(Array(1, 2, 3, 4))
            ' La matrice "a" est maintenant dans un ordre aléatoire, pour information (2, 3, 1, 4)

## Slice

Renvoie un sous-ensemble d'une matrice à une dimension.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice à parcourir.

from : l'index inférieur dans array_1d de la sous matrice à extraire (from inclus)

upto : l'index supérieur dans array_1d de la sous matrice à extraire (upto inclus). La valeur par défaut est la limite supérieure de array_1d. Si upto < from alors la matrice renvoyée est vide.

### Exemple :

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

## Sort

Trier une matrice à une dimension par ordre croissant ou décroissant. Les comparaisons de texte peuvent être sensibles à la casse ou non.
La matrice doit être remplie de manière homogène, ce qui signifie que les éléments doivent être des scalaires du même type. Les éléments
Empty et Null sont autorisés. Conventionnellement Empty < Null < toute autre valeur scalaire.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice à trier.

sortorder : il peut s'agir de "ASC" (par défaut) ou de "DESC".

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

### Exemple :

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

## SortColumns

Renvoyer une permutation des colonnes d'une matrice à deux dimensions, triées sur les valeurs d'une ligne donnée.
La ligne doit être remplie de manière homogène, ce qui signifie que tous les éléments doivent être des scalaires du même type. Les éléments
Empty et Null sont autorisés. Conventionnellement Empty < Null < toute autre valeur scalaire.

### Syntaxe :

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

### Paramètres :

array_2d: la matrice à deux dimensions à trier

rowindex : l'index de la ligne qui servira de référence pour trier les colonnes.

sortorder : il peut s'agir de "ASC" (par défaut) ou de "DESC".

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

### Exemple :

        ' 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

Renvoyer une permutation des lignes d'une matrice à deux dimensions, triées sur les valeurs d'une colonne donnée.
La colonne doit être remplie de manière homogène, donc tous les éléments doivent être des scalaires du même type. Les éléments
Empty et Null sont autorisés. Conventionnellement Empty < Null < toute autre valeur scalaire.

### Syntaxe :

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

### Paramètres :

array_2d : la matrice à trier.

columnindex : l'index de la colonne qui servira de référence pour trier les lignes.

sortorder : il peut s'agir de "ASC" (par défaut) ou de "DESC".

casesensitive : uniquement pour une comparaison de chaînes (par défaut = False).

### Exemple :

        ' 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

Échange les lignes et les colonnes d'une matrice à deux dimensions.

### Syntaxe :

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

### Paramètres :

array_2d: la matrice à deux dimensions à transposer

### Exemple :

        ' 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

Supprimer d'une matrice à une dimension toutes les entrées Null, Empty et de longueur nulle.
Les éléments de type chaîne sont découpés avec la fonction LibreOffice Basic Trim().

### Syntaxe :

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

### Paramètres :

array_1d : la matrice à réduire.

### Exemple :

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

## Union

Construit un ensemble, dont la matrice est basée sur 0, en utilisant l'opérateur d'union sur les deux matrices d'entrée. Les éléments résultants viendront des deux matrices.
La matrice résultante est triée par ordre croissant.
Les deux matrices d'entrée doivent être remplies avec homogénéité, leurs éléments doivent être des scalaires de même type. Les valeurs Empty et Null ne sont pas permises.
La comparaison de texte peut être sensible à la casse ou non.

### Syntaxe :

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

### Paramètres :

array1_1d : la première matrice de saisie.

array2_1d : la seconde matrice de saisie.

casesensitive : applicable uniquement si les matrices sont peuplées avec des chaînes (par défaut = False).

### Exemple :

        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

Construire un ensemble de valeurs uniques dérivées de la matrice d'entrée.
La matrice d'entrée doit être remplie de manière homogène, ses éléments doivent être des scalaires du même type. Les éléments Empty et Null sont interdits.
La comparaison de texte peut être sensible à la casse ou non.

### Syntaxe :

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

### Paramètres :

array_1d : la matrice de saisie.

casesensitive : applicable uniquement si la matrice est peuplée avec des chaînes (par défaut = False).

### Exemple :

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

Toutes les routines ou identifiants de base ScriptForge qui sont préfixés par un caractère de soulignement "_" sont réservés à un usage interne. Ils ne sont pas destinés à être utilisés dans des macros de base ou des scripts Python.

Rubriques connexes

Fonctions de matrice

Utilisation des fonctions Cacl dans les macros

Service ScriptForge.Dictionary