ScriptForge.Dictionary zerbitzua

Hiztegi bat gako-elementu bikoteen bilduma bat da

Gakoak eta elementuak atzitu, zenbatu eta eguneratu daitezke, eta beste hainbat ekintza gauzatu daitezke haiekin.

Iradokizun-ikonoa

LibreOffice Basic Collection objektuak ez du onartzen gakoak atzitzea.
Gainera, bere elementuek jatorrizko Basic datu motak soilik dituzte: datak, testua, zenbakiak eta antzekoak.


Zerbitzuari deitzea

Hurrengo adibideak myDict izeneko hiztegi hutsa sortzen du.


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim myDict As Variant
    myDict = CreateScriptService("Dictionary")
  

Gomendagarria da baliabideak askatzea haiek erabili ondoren:


     Set myDict = myDict.Dispose()
  

Propietateak

Izena

Irakurtzeko soilik

Mota

Deskribapena

Count

Bai

Long

Hiztegiaren sarrera kopurua

Items

Bai

Aldagaien matrizea

Elementu kopurua dimentsio bakarreko matrize gisa

Keys

Bai

Kate-matrizea

Gakoen zerrenda dimentsio bakarreko matrize gisa


Iradokizun-ikonoa

Keys eta Items propietateek bakoitzak bere edukiak itzultzen dituzte, ordena berdina erabilita. Ordenak ez du zerikusirik sorrera-sekuentziarekin.


Adibidea:

Hurrengo adibideak Keys propietatea darabil myDict hiztegiko gako guztietan iteratzeko.


    Dim a As Variant, b As String
    a = myDict.Keys
    For Each b In a
        MsgBox(myDict.Item(b))
    Next b
    

Metodoak

Add
ConvertToArray
ConvertToJson
ConvertToPropertyValues

Exists
ImportFromJson
ImportFromPropertyValues
Item

Remove
RemoveAll
ReplaceItem
ReplaceKey


Add

Gako-elementu bikote berria gehitzen dio hiztegiari. True itzultzen du eragiketa ongi gauzatzen bada.

Sintaxia:


          myDict.Add(Key As String, Item As Variant) As Boolean
        

Parametroak:

Key : Elementua identifikatzeko erabiliko den kate-balioa. Ez ditu maiuskulak eta minuskulak bereizten.

Item : Edozein balio: matrize bat, Basic objektu bat, UNO objektu bat, hiztegi bat...

Adibidea:


          Dim NewValue As Variant
          myDict.Add("NewKey", NewValue)
       
warning

Gako bakoitzak bakarra izan behar du hiztegi berean. Gakoa lehendik badago hiztegian, DUPLICATEKEYERROR errore bat sortuko da. Zuriuneekin egindako gakoek INVALIDKEYERROR errorea sortuko dute.


ConvertToArray

Hiztegiaren edukiak zeron oinarritutako bi zutabeko matrize baten biltegiratzen ditu. Gakoak lehen zutabean biltegiratuko dira eta elementuak bigarren zutabean.

Hiztegia hutsik badago, metodo honek hutsik dagoen Array bat itzuliko du.

Sintaxia:


          myDict.ConvertToArray() As Variant
        

Adibidea:


        Dim myDict as Variant
        myDict = CreateScriptService("Dictionary")
        myDict.Add("a", 1)
        myDict.Add("b", 2)
        myDict.Add("c", 3)
        Dim arr as Variant
        arr = myDict.ConvertToArray()
        '(("a", 1), ("b", 2), ("c", 3))
      

ConvertToJson

Hiztegi bateko edukiak JSON (JavaScript Object Notation) testu bihurtzen ditu.

Mugak

Metodo honek honako datu motak onartzen ditu: String, Boolean, zenbakiak, Null eta Empty. Mota horretako elementuak dituzten matrizeak ere onartzen dira, berdin dio haien dimentsioak zein diren. Datak kate bihurtzen dira, baina ezin dira matrizeen barruan erabili. Beste datu motak kate modura duten ordezkapenera bihurtzen dira, SF_String.Represent zerbitzuaren bidez.

Sintaxia:


            myDict.ConvertToJson([Indent As Variant]) As String
        

Parametroak:

Indent: Indent zenbaki positibo bat edo testu bat bada, JSON matrizeetako elementuak eta objektu kideak koskatze-maila batekin inprimatuko dira. Indent balioa negatiboa bada, lerro berriak koskatzerik gabe gehituko dira. Indent "" balio lehenetsiak irudikapen trinkoena hautatuko du. Osoko zenbaki positiboa erabiltzen bada Indent parametroak, koskatzeak horrenbestekoak izango dira maila bakoitzeko. Indent kate bat bada, adibidez Chr(9) edo Tab(1), Tab karakterea erabiliko da maila bakoitza koskatzeko.

Adibidea:


            myDict.Add("p0", 12.5)
            myDict.Add("p1", "a string àé""ê")
            myDict.Add("p2", DateSerial(2020,9,28))
            myDict.Add("p3", True)
            myDict.Add("p4", Array(1,2,3))
            MsgBox myDict.ConvertToJson()    
            '{"p0": 12.5, "p1": "a string \u00e0\u00e9\"\u00ea", "p2": "2020-09-28", "p3": true, "p4": [1, 2, 3]}
        

ConvertToPropertyValues

Gorde hiztegiaren edukia PropertyValues elementuen matrize batean.

Matrizeko sarrera bakoitza com.sun.star.beans.PropertyValue bat da. Gakoa Name aldean biltegiratzen da, eta elementua Value aldean.

Elementuren bat Date motakoa bada, com.sun.star.util.DateTime egitura bihurtuko da. Elementuren bat matrize huts bat bada, Null bihurtuko da. Emaitza gisa sortutako matrizea hutsik egongo da hiztegia hutsik badago.

Sintaxia:


          myDict.ConvertToPropertyValues() As Variant
        

Adibidea:


          Dim myDict as Variant
          myDict = CreateScriptService("Dictionary")
          'Zenbait propietate gehitzen dizkio hiztegiari
          myDict.Add("Color", "Blue")
          myDict.Add("Width", 20)
          'PropertyValue objektuen matrize bihurtzen du
          Dim prop as Variant
          prop = myDict.ConvertToPropertyValues()
        
tip

UNO liburutegiko zerbitzu eta metodo askok PropertyValue egitura erabilita adierazten diren parametroak dituzte. Egitura hori LibreOffice APIkoa da.


Exists

Gako bat hiztegian badagoen ala ez zehazten du.

Sintaxia:


          myDict.Exists(Key As String) As Boolean
        

Parametroak:

Gakoa: Hiztegian dagoen ala ez begiratuko den gakoa.

Adibidea:


          Dim myDict as Variant
          myDict = CreateScriptService("Dictionary")
          'Zenbait propietate gehitzen dizkio hiztegiari
          myDict.Add("Color", "Blue")
          myDict.Add("Width", 20)
          '(...)
          If Not myDict.Exists("Size") Then
             MsgBox "You have to provide a Size value"
          End If
        

ImportFromJson

JSON (JavaScript Object Notation) kate bateko edukia uneko hiztegiari gehitzen dio. True itzultzen du ongi gauzatzen bada.

Mugak

JSON kateak eduki ditzake zenbakiak, testua, boolearrak, balio nuluak eta mota horiek dituzten matrizeak. Ez ditu eduki behar azpihiztegi deituriko JSON objektuak.

Testua data bihurtzeko saiakera egiten da elementuak honako ereduetako bat badu: UUUU-HH-EE, OO:MM:SS edo UUUU-HH-EE OO:MM:SS.

Sintaxia:


            myDict.ImportFromJson(InputStr As String, [Overwrite As Boolean]) As Boolean
        

Parametroak:

InputStr: Inportatuko den katea.

Overwrite: True bada, izen bera duten sarrerak egon daitezke hiztegian eta haien balioak gainidatzi egingo dira. False (lehenetsia) bada, gako errepikatuek errore bat sortuko dute. Kontuan izan hiztegiko gakoek ez dituztela maiuskulak/minuskulak bereizten, baina JSON kateetako izenek bai.

Adibidea:


            Dim s As String
            s = "{'firstName': 'John','lastName': 'Smith','isAlive': true,'age': 66, 'birth':  '1954-09-28 20:15:00'" _
                & ",'address': {'streetAddress': '21 2nd Street','city': 'New York','state': 'NY','postalCode': '10021-3100'}" _
                & ",'phoneNumbers': [{'type': 'home','number': '212 555-1234'},{'type': 'office','number': '646 555-4567'}]" _
                & ",'children': ['Q','M','G','T'],'spouse': null}"
            s = Replace(s, "'", """")
            myDict.ImportFromJson(s, OverWrite := True)
            ' "address" eta "phoneNumbers" (0) eta (1) azpi-hiztegiak balio huts gisa inportatuko dira.
        

ImportFromPropertyValues

PropertyValue objektuen matrize baten balioak uneko hiztegian txertatzen ditu. PropertyValue izenak gako modura erabiltzen dira hiztegian, eta balioak balio gisa. True itzultzen du eragiketa ongi gauzatu bada.

Sintaxia:


            myDict.ImportFromPropertyValues(PropertyValues As Variant [, Overwrite As Boolean]) As Boolean
        

Parametroak:

PropertyValues: Dimentsio bateko eta zero oinarriko matrize bat, com.sun.star.beans.PropertyValue objektuak dituena. Parametro hau matrize batean ez dagoen PropertyValue objektu bakarra ere izan daiteke.

Overwrite: Parametro hau True bada, izen bereko sarrerak egon daitezke hiztegian, eta haien balioak gainidatzi egingo dira. False (balio lehenetsia) bada, gako errepikatuek errore bat sortuko dute. Kontuan izan hiztegiko gakoek ez dituztela maiiuskulak/minuskulak bereiztean, baina propietate-balioen multzoetako izenek bai.

Adibidea:


            Dim vProp As New com.sun.star.beans.PropertyValue
            vProp.Name = "prop"
            vProp.Value = CDateToUnoDateTime(Now)
            myDict.ImportFromPropertyValues(vProp, Overwrite := True)
        

Item

Hiztegi batean dagoen sarrera bat atzitzen du, bere gakoa erabilita. Elementuaren balioa itzultzen du eragiketa ongi gauzatu bada, bestela Empty itzultzen du.

Sintaxia:


          myDict.Item(Key As String) As Variant
        

Parametroak:

Key: Ez ditu maiuskulak/minuskulak bereizten. Hiztegian egon behar da, bestela UNKNOWNKEYERROR errorea sortuko da.

Adibidea:

Hurrengo adibidean, hiztegiko gako guztien iterazio bat egiten da eta Item metodoa erabiltzen da beren balioak atzitzeko.


          Dim myDict as Variant, k as Variant, allKeys as Variant
          myDict = CreateScriptService("Dictionary")
          myDict.Add("key1", 100)
          myDict.Add("key2", 200)
          myDict.Add("key3", 300)
          allKeys = myDict.Keys
          For Each k in allKeys
             MsgBox(myDict.Item(k))
          Next k
       

Remove

Hiztegiko sarrera bat kentzen du bere gakoan oinarrituta. True itzultzen du eragiketa ongi gauzatzen bada.

Sintaxia:


          myDict.Remove(Key As String) As Boolean
        

Parametroak:

Key: Ez ditu maiuskulak/minuskulak bereizten. Hiztegian egon behar da, bestela UNKNOWNKEYERROR errorea sortuko da.

Adibidea:


          myDict.Add("key1", 100)
          myDict.Add("key2", 200)
          myDict.Add("key3", 300)
          MsgBox(myDict.Count) 'Prints "3"
          myDict.Remove("key2")
          MsgBox(myDict.Count) 'Prints "2"
       

RemoveAll

Hiztegiko sarrera guztiak kentzen ditu. True (egia) itzultzen du ongi gauzatzen bada.

Sintaxia:


          myDict.RemoveAll() As Boolean
        

Adibidea:


          myDict.Add("key1", 100)
          myDict.Add("key2", 200)
          myDict.Add("key3", 300)
          MsgBox(myDict.Count) 'Prints "3"
          myDict.RemoveAll()
          MsgBox(myDict.Count) 'Prints "0"
        

ReplaceItem

Elementu-balio bat ordezten du bere gakoan oinarrituta. True (egia) itzultzen du ongi gauzatzen bada.

Sintaxia:


          myDict.ReplaceItem(Key As String, Value As Variant) As Boolean
        

Parametroak:

Key: Ordeztuko balioaren gakoa adierazten duen kate-balioa. Ez ditu maiuskulak/minuskulak bereizten. Gakoa hiztegian ez badago, UNKNOWNKEYERROR errorea sortuko da.

Value: 'Key' parametroak erreferentzia egiten dion elementuaren balio berria.

Adibidea:


          myDict.Add("a", 1)
          MsgBox(myDict.Item("a")) 'Prints "1"
          myDict.ReplaceItem("a", 100)
          MsgBox(myDict.Item("a")) ' Prints "100"
       

ReplaceKey

Hiztegiko gako bat beste gako batekin ordezten du. Elementuaren balioa ez da aldatuko. True itzultzen du eragiteka ongi gauzatzen bada.

Sintaxia:


          myDict.ReplaceKey(Key As String, Value As String) As Boolean
        

Parametroak:

Key: Ordeztuko den gakoa adierazten duen kate-balioa. Ez ditu maiuskulak/minuskulak bereizten. Gakoa hiztegian ez badago, UNKNOWNKEYERROR errorea sortuko da.

Value: Gako berrirako kate-balioa. Ez ditu maiuskulak/minuskulak bereizten. Gako berria lehendik badago hiztegian, DUPLICATEKEYERROR errorea sortuko da.

Adibidea:


          myDict.Add("oldKey", 100)
          MsgBox(myDict.Item("oldKey")) 'Prints "100"
          myDict.ReplaceKey("oldKey", "newKey")
          MsgBox(myDict.Item("newKey")) ' Prints "100"
       
warning

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


Emaguzu laguntza!