ScriptForge.Array zerbitzua

Dimentsio bakarreko matrizeak (bektoreak) eta bi dimentsiotako matrizeak aldatzeko metodoen bilduma bat eskaintzen du. Besteak beste, ezartzeko eragiketak, ordenatzekoak eta testu-fitxategietatik inportatzeko eta esportatzekoak ditu.

Bi dimentsio baino gehiago dituzten matrizeak ezin dira erabili zerbitzu honetako metodoekin. Salbuespen bakarra CountDims metodoa da, horrek edozein dimentsio kopuru duten matrizeak onartzen baititu.

Matrize-elementuek edozein motatako balioak eduki ditzakete, baita azpimatrizeak ere.

Zerbitzuari deitzea

Array zerbitzua erabili baino lehen, ScriptForge liburutegia kargatu behar da honakoa erabilita:


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
   

Liburutegia kargatzean SF_Array objektua sortuko da, era horren bidez Array zerbitzuko metodoak deitu ahal izango dira.

Hurrengo kode-zatiek Array zerbitzuko metodoak deitzeko modu desberdinak erakusten dituzte (adibide gisa Append metodoa erabili da):


      SF_Array.Append(...)
   

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

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

CreateScriptService metodoa erabilgarri egoteko, lehenengo ScriptForge liburutegia kargatu behar da.


Metodoak

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

Metodo askoren lehen argumentua erabiliko den matrize-objektua da. Beti erreferentzia gisa pasatuko da eta ez du aldaketarik izango. 'Append', 'Prepend' eta antzeko metodoek matrize-objektu berria itzuliko dute exekutatuak izan ondoren.


Append

Argumentu gisa zerrendatutako elementuak sarrerako matrizearen amaieran eransten ditu.

Sintaxia:


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

Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

arg0, ... : 'Matrizea_1D' matrizeari erantsiko zaizkion elementuen zerrenda.

Adibidea:


      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

Zutabe bat eransten du bi dimentsioko matrize baten eskuineko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

Sintaxia:


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

Parametroak:

Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.

New_Column : Array_2D matrizean dauden errenkada kopuruaren elementu kopuru bera duen dimentsio bakarreko matrize bat.

Adibidea:


      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

Erantsi errenkada berria bi dimentsioko matrize baten beheko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

Sintaxia:


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

Parametroak:

Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.

Row : dimentsio bakarreko matrize bat, "Array_2D" matrizeak duen zutabe kopuruaren bezainbeste elementu dituena.

Adibidea:


      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

Egiaztatu dimentsio bakarreko matrize batek zenbaki, testu edo data jakin bat duen. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Sarrerako matrize ordenatuak modu homogeneoan bete behar dira, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza aurresanezina da matrizea ordenatua dela iragartzen bada eta halakoa ez bada.
Bilaketa bitarra egiten da matrizea ordenatzen denean; bestela, goitik behera eskaneatu besterik ez da egiten eta Empty eta Null elementuei ez ikusiarena egiten zaie.

Sintaxia:


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

Parametroak:

Array_1D: eskaneatuko den matrizea.

ToFind : bilatuko den zenbaki, data edo kate bat.

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False da.

SortOrder : "ASC", "DESC" edo "" (= ez ordenatua, lehenetsia)

Adibidea:


      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

Biltegiratu 2 zutabetako matrize baten edukia ScriptForge.Dictionary objektu batean.
Gakoa lehen zutabetik erauziko da, elementua bigarrenetik.

Sintaxia:


      SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
   

Parametroak:

Array_1D : lehen zutabeak luzera > 0 duten kateak soilik eduki behar ditu, edozein ordenatan.

Adibidea:


      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

Zenbatu matrize baten dimentsio kopurua. Emaitza bi baino handiagoa izan daiteke.
Argumentua ez bada matrize bat, -1 itzultzen du
Matrizea hasieratu ez bada, 0 itzultzen du.

Sintaxia:


      SF_Array.CountDims(Array_ND As Variant) As Integer
   

Parametroak:

Array_ND : aztertuko den matrizea.

Adibidea:


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

Difference

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeei diferentzia eragilea aplikatuta. Emaitza gisa sortutako elementuak lehen matrizetik sortuko dira, ez bigarrenetik.
Emaitzako matrizea gorantz ordenatuta egongo da.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, beren elementuek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.

Sintaxia:


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

Parametroak:

Array1_1D : Dimentsio bakarreko erreferentziako matrizea. Matrize horren elementuak aztertuko dira kenduko diren ala ez ebazteko.

Array2_1D : Dimentsio bakarreko matrizea. Matrize horren elementuak sarrerako lehen matrizetik kenduko dira.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

Adibidea:


      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

Idatzi matrize bateko elementu guztiak modu sekuentzialean testu-fitxategi batean. Fitxategia lehendik badago, hura gainidatziko da abisurik gabe.

Sintaxia:


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

Parametroak:

Array_1D : Esportatuko den matrizea. Kateak soilik izan behar ditu.

FileName : Datuak dituen testu-fitxategiaren izena. Izena SF_FileSystem zerbitzuko uneko FileNaming propietateak emandako moduan adierazi behar da . Balio lehenetsia = any (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).

Encoding : Erabili behar den karaktere-jokoa. Erabili IANA karaktere-jokoak atalean zerrendatutako izen bat. Kontuan izan LibreOffice aplikazioak ez dituela zertan existitzen diren karaktere-joko guztiak inplementatu. Balio lehenetsia "UTF-8" da.

Adibidea:


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

ExtractColumn

Erauzi zutabe zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.

Sintaxia:


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

Parametroak:

Array_2D : Erauzpena jasango duen matrizea.

ColumnIndex : Erauziko den zutabearen zenbakia. [LBound, UBound] barrutian egon behar du.

Adibidea:


      Sub Example_ExtractColumn
         '3x3 matrize bat sortzen du: |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))
         'Hirugarren zutabea erauzten du: |3, 6, 9|
         col = SF_Array.ExtractColumn(mat, 2)
      End Sub
   

ExtractRow

Erauzi errenkada zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.

Sintaxia:


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

Parametroak:

Array_2D : Erauzketa matrize honetatik egingo da.

RowIndex : Erauziko den errenkadaren zenbakia. [LBound, UBound] barrutian egon behar du.

Adibidea:


      Sub Example_ExtractRow
         '3x3 matrize bat sortzen du: |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))
         'Lehen errenkada erauzten du: |1, 2, 3|
         row = SF_Array.ExtractRow(mat, 0)
      End Sub
   

Flatten

Pilatu matrize berri batean, azpimatrizerik gabe, matrize bateko elementu bakarrak eta bere azpimatrizeetako elementu guztiak. Azpimatrize hutsei ez ikusiarena egingo zaie eta dimentsio bat baino gehiago ditzuten azpimatrizeak ez dira berdinduko.

Sintaxia:


      SF_Array.Flatten(Array_1D As Variant) As Variant
   

Parametroak:

Matrizea_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

Adibidea:


      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

Flatten metodoa erabili daiteke, Append edo Prepend edo beste metodo batzuekin batera, 1D matrizeen multzo bat 1D matrize bakarrean kateatzeko.


Adibidea:

Hurrengo adibidean, Flatten eta Append metodoak hiru matrize kateatzeko nola erabili daitezkeen azaltzen da.


      Sub Concatenate_Example
         'Hiru matrize sortzen ditu adibide honetarako
         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)
         'Hiru matrize kateatzen ditu 1D matrize bakar batean
         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

Inportatu komaz banandutako balioen (CSV) fitxategi bateko datuak. Komaren ordez beste karaktere bat erabili daiteke.

CSV formatu aplikagarria IETF Common Format and MIME Type for CSV Files webgunean dago deskribatuta.

Fitxategiko lerro bakoitzak erregistro oso bat du (ez dago onartuta lerroak zatitzea).
Hala ere, \n, \t eta antzeko sekuentziak aldaketarik gabe uzten dira. Erabili SF_String.Unescape() metodoa haiek kudeatzeko.

Metodo honek bi dimentsiotako matrize bat itzultzen du. Matrizearen errenkada bakoitza fitxategian irakurritako erregistro bakar bati dagokio, eta zutabeak erregistroko zutabeei dagozkie. Ez da egiaztatzerik egiten eremu motek zutabez zutabe duten koherentzia ziurtatzeko. Estimazio bat egingo da zenbakizko motak eta datak diren motak identifikatzeko.

Lerroak fitxategiko lehen lerroak baino eremu gehiago edo gutxiago baditu, salbuespen bat sortuko da. Lerro hutsei ez ikusiarena egingo zaie. Fitxategiaren tamainak elementu kopuruaren muga gainditzen badu (ikusi kodea barruan), abisu bat sortuko da eta matrizea moztu egingo da.

Sintaxia:


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

Parametroak:

FileName : Datuak dituen testu-fitxategiaren izena. Izena nola adieraziko den zehazteko, SF_FileSystem zerbitzuaren uneko FileNaming propietatea erabiliko da. Lehenetsia = edozein (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).

Delimiter : Karaktere bakarra, normalean koma bat, puntu eta koma bat edo tabulazio-karaktere bat. Lehenetsia = ",".

DateFormat : Mekanismo berezi batek maneiatzen ditu datak DateFormat honakoetako bat bada: "UUUU-HH-EE", "EE-HH-UUUU" edo "HH-EE-UUUU". Marratxoaren (-) ordez puntu bat (.), barra bat (/) edo zuriune bat erabili daiteke. Beste data-formatu batzuei ez ikusiarena egingo zaie. Lehenespen modura "" diren datak testu normaltzat hartzen dira.

Adibidea:

Honako CSV fitxategi bat emanda:


      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

Bilatu dimentsio bakarreko matrize batean zenbaki, kate edo data bat. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Matrizea ordenatuta badago, modu homogeneneoan bete behar da, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza ezin da aurresan matrizea ordenatuta dagoela esaten bada baina ez badago.
Ordenatutako matrizeetan bilaketa bitarra exekutatzen da. Bestela, matrizeak goitik behera eskaneatzen dira eta Empty eta Null elementuei ez ikusiarena egiten zaie.

Metodoak LBound(sarrerako matrizea) - 1 itzultzen du bilaketak arrakastarik izan ez badu.

Sintaxia:


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

Parametroak:

Array_1D : Eskaneatuko den matrizea.

ToFind : Bilatuko den zenbaki, data edo kate bat.

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).

SortOrder : "ASC", "DESC" edo "" (= ordenatu gabea, lehenetsia)

Adibidea:


      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

Sartu argumentu gisa zerrendatutako elementuak sarrerako matrizearen indize jakin baten aurrean.
Argumentuak itsuan txertatuko dira. Horietako bakoitza eskalar bar izan daiteke edo edozein motatako azpimatrize bat izan daiteke.

Sintaxia:


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

Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon behar du.

Before : Txertatzea indize honen aurrean gertatuko da; [LBound, UBound + 1] tartean egon behar du.

arg0, ... : Array_1D barruan txertatuko diren elementuen zerrenda.

Adibidea:


      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

Txertatu elementu berri bat bere tokian ordenatutako matrize batean.
Matrizea modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak debekatuta daude.

Sintaxia:


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

Parametroak:

Array_1D : Ordenatuko den matrizea.

Item : Txertatuko den eskalarra, matrizean lehendik dauden elementuen mota berekoa.

SortOrder : "ASC" (lehenetsia) edo "DESC".

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).

Adibidea:


      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

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen ebakidura-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta dago.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

Sintaxia:


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

Parametroak:

Array1_1D : Sarrerako lehen matrizea.

Array2_1D : Sarrerako bigarren matrizea.

CaseSensitive : Matrizeak testu-elementuek beteta badaude soilik, balio lehenetsia = False (faltsua).

Adibidea:


      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

Elkartu bi dimentsioko matrize bat bi mugatzailerekin, bat zutabeentzat eta bestea errenkadentzat.

Sintaxia:


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

Parametroak:

Array_2D : Elementu bakoitzak testu, zenbaki, data edo boolear izan behar du.
Datak UUU-HH-EE oo:mm:ss formatura bihurtuko da.
Baliogabeko elementuak zero luzerako kateekin ordeztuko dira.

ColumnDelimiter : Zutabe bakoitza mugatzen du (balio lehenetsia = Tab/Chr(9)).

RowDelimiter: Errenkada bakoitza mugatzen du (balio lehenetsia = LineFeed/Chr(10))

Quote : True (egia) bada, babestu kateak komatxo bikoitzekin. Balio lehenetsia False (faltsua) da.

Adibidea:


      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

Kokatu argumentu gisa zerrendatutako elementuak sarrerako matrizearen hasieran.

Sintaxia:


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

Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

arg0, ... : Array_1D matrizearen aurrean kokatuko diren elementuen zerrenda.

Adibidea:


      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

Erantsi zutabe berri bat bi dimentsioko matrize baten ezkerreko aldean. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

Sintaxia:


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

Parametroak:

Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken zutabetzat hartuko da.

Column : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.

Adibidea:


      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

Erantsi errenkada berri bat bi dimentsioko matrize baten hasieran. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

Sintaxia:


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

Parametroak:

Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken errenkadatzat hartuko da.

Row : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.

Adibidea:


      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

Hasieratu zeron oinarritutako matrize berri bat zenbakizko balioekin.

Sintaxia:


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

Parametroak:

From : Lehen elementuaren balioa.

UpTo : Azken elementuak ez du UpTo gainditu behar.

ByStep : Elkarren ondoan dauden bi elementuen arteko diferentzia (balio lehenetsia = 1).

Adibidea:


      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

Itzuli dimentsio bakarreko matrize baten alderantzizkoa.

Sintaxia:


      SF_Array.Reverse(Array_1D As Variant) As Variant
   

Parametroak:

Array_1D : Alderantzikatuko den matrizea.

Adibidea:


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

Shuffle

Itzuli dimentsio bakarreko matrize baten ausazko permutazio bat.

Sintaxia:


      SF_Array.Shuffle(Array_1D As Variant) As Variant
   

Parametroak:

Array_1D : Nahastuko den matrizea.

Adibidea:


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

Slice

Itzuli dimentsio bakarreko matrize baten azpimultzo bat.

Sintaxia:


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

Parametroak:

Array_1D : Zatituko den matrizea.

From : Erauziko den azpimatrizearen indizerik baxuena (From barne) Array_1D matrizean

UpTo : Erauziko den azpimatrizearen indizerik altuena (UpTo barne) Array_1D matrizean. Balio lehenetsia = Array_1D matrizearen goiko muga. UpTo < From bada, orduan itzuliko den matrizea hutsik egongo da.

Adibidea:


      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

Ordenatu dimentsio bakarreko matrize bat gorantz edo beherantz. Testu-konparazioetan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

Sintaxia:


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

Parametroak:

Array_1D : Ordenatuko den matrizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua.

Adibidea:


      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

Itzuli bi dimentsioko matrize baten zutabeen permutazio bat, emandako errenkada baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

Sintaxia:


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

Parametroak:

Array_1D: Ordenatuko den matrizea.

RowIndex : Zutabeak ordenatzeko erabiliko den errenkadaren indizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).

Adibidea:


      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

Itzuli bi dimentsioko matrize baten errenkaden permutazio bat, emandako zutabe baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

Sintaxia:


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

Parametroak:

Array_1D : Ordenatuko den matrizea.

RowIndex : Errenkadak ordenatzeko erabiliko den zutabearen indizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).

Adibidea:


      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

Errenkadak eta zutabeak trukatzen ditu bi dimentsioko matrize batean.

Sintaxia:


      SF_Array.Transpose(Array_2D As Variant) As Variant
   

Parametroak:

Array_2D : Trukatuko den matrizea.

Adibidea:


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

TrimArray

Dimentsio bakarreko matrize batean, kendu Null, Empty eta zero luzerako sarrerak.
Kate motako elementuak LibreOffice Basic Trim() funtzioarekin moztuko dira.

Sintaxia:


      SF_Array.TrimArray(Array_1D As Variant) As Variant
   

Parametroak:

Array_1D : Eskaneatuko den matrizea.

Adibidea:


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

Union

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen batuketa-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta egongo dira.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

Sintaxia:


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

Parametroak:

Array1_1D : Sarrerako lehen matrizea.

Array2_1D : Sarrerako bigarren matrizea.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

Adibidea:


      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

Eraiki balio bakarren multzo bat sarrerako matrize batetik eratorrita.
Sarrerako matrizeak modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

Sintaxia:


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

Parametroak:

Array_1D : Sarrerako matrizea.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

Adibidea:


      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

Aurrizki gisa azpimarra bat ("_") duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez daude Basic makroetan erabiltzeko pentsatuta.


Emaguzu laguntza!