Storitev ScriptForge.Dictionary

Slovar je zbirka parov ključ-element

Ključe in elemente lahko pridobimo, štejemo, posodobimo in še veliko več.

Ikona namiga

Predmet LibreOffice Basic Collection ne podpira pridobivanja ključev.
Poleg tega njegovi elementi vsebujejo le primitivne podatkovne vrste Basic, kot so datumi, besedilo, števila ipd.


Priklic storitve

Naslednji primer ustvari myDict kot prazen slovar.


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

Priporočamo, da po uporabi sprostite vire:


     Set myDict = myDict.Dispose()
  

Lastnosti

Ime

Samo za branje

Vrsta

Opis

Count

Da

Long

Število vnosov v slovarju

Items

Da

Polje spremenljivk Variant

Seznam elementov kot enodimenzionalno polje

Keys

Da

Polje nizov

Seznam ključev kot enodimenzionalno polje


Ikona namiga

Lastnosti Keys (angl. ključi) in Items (angl. elementi) vrneta ustrezno vsebino, pri čemer uporabljata identično razvrstitev. Zaporedje ni odvisno od zaporedja ustvarjanja.


Primer:

Naslednji primer uporablja lastnost Keys, da gre po vseh ključih v slovarju myDict.


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

Metode

Add
ConvertToArray
ConvertToJson
ConvertToPropertyValues

Exists
ImportFromJson
ImportFromPropertyValues
Item

Remove
RemoveAll
ReplaceItem
ReplaceKey


Add

V slovar doda nov par ključ-element. Vrne True, če uspe.

Skladnja:


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

Parametri:

Key: niz, s katerim boste identificirali element. Pri ključu razlike med velikimi in malimi črkami niso upoštevane.

Item: poljubna vrednost, vključno s poljem, predmetom Basic, predmetom UNO, slovarjem itn.

Primer:


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

Vsak ključ mora biti edinstven v danem slovarju. Če v slovarju ključ že obstaja, prikliče napako DUPLICATEKEYERROR. Ključi s presledki prikličejo napako INVALIDKEYERROR.


ConvertToArray

Shrani vsebino slovarja v polje dveh stolpcev na osnovi ničel. Ključi so shranjeni v prvem stolpcu, v drugem stolpcu pa elementi.

Če je slovar prazen, ta metoda vrne prazno polje, Array.

Skladnja:


          myDict.ConvertToArray() As Variant
        

Primer:


        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

Pretvori vsebino slovarja v besedilo JSON (angl. JavaScript Object Notation).

Omejitve

Ta metoda podpira naslednje vrste podatkov: String, Boolean, numbers, Null in Empty. Dovoljena so tudi polja, ki vsebujejo elemente teh vrst, ne glede na njihove mere. Datumi so pretvorjeni v nize, ne morejo pa biti uporabljeni v poljih. Druge vrste podatkov so pretvorjene v njihovo reprezentacijo nizov z uporabo storitve SF_String.Represent.

Skladnja:


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

Parametri:

Indent: če je Indent pozitivno število ali besedilo, so elementi polja in člani predmeta JSON ozaljšano izpisani z ustrezno ravnjo zamika. Negativna vrednost Indent doda nove vrstice brez zamika. Privzeta vrednost Indent "" izbere najbolj strnjeno predstavitev. S pozitivnim celim številom za Indent zamakne vsebino za toliko presledkov na raven. Če je Indent niz, kot sta Chr(9) in Tab(1), se znak tabulatorja uporablja za zamik vsake ravni.

Primer:


            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

Shrani vsebino slovarja v polje vrednosti PropertyValues.

Vsak vnos v polju je com.sun.star.beans.PropertyValue. Ključ je shranjen v Name, element je shranjen v Value.

Če je eden od elementov vrste Date, se pretvori v strukturo com.sun.star.util.DateTime. Če je eden od elementov prazno polje, je pretvorjeno v Null. Če je slovar prazen, je rezultat prazno polje.

Skladnja:


          myDict.ConvertToPropertyValues() As Variant
        

Primer:


          Dim myDict as Variant
          myDict = CreateScriptService("Dictionary")
          'V slovar doda nekatere lastnosti
          myDict.Add("Color", "Blue")
          myDict.Add("Width", 20)
          'Pretvori v matriko predmetov PropertyValue
          Dim prop as Variant
          prop = myDict.ConvertToPropertyValues()
        
tip

Številne storitve in metode knjižnice UNO jemljejo za parametre, predstavljene s strukturo PropertyValue, ki je del API LibreOffice.


Exists

Ugotovi, ali ključ v slovarju obstaja.

Skladnja:


          myDict.Exists(Key As String) As Boolean
        

Parametri:

Key: ključ, ki bo poiskan v slovarju.

Primer:


          Dim myDict as Variant
          myDict = CreateScriptService("Dictionary")
          'V slovar doda nekatere lastnosti
          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

Doda vsebino niza JSON (JavaScript Object Notation) v trenutni slovar. Vrne True, če uspe.

Omejitve

Niz JSON lahko vsebuje števila, besedilo, logične vrednosti, ničelne vrednosti (null) in polja, ki vsebujejo te vrste podatkov. Ne sme vsebovati predmetov JSON in sicer podslovarjev.

Izvede se poskus pretvorbe besedila v datum, če element ustreza enemu od naslednjih vzorcev: LLLL-MM-DD, HH:MM:SS ali LLLL-MM-DD HH:MM:SS.

Skladnja:


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

Parametri:

InputStr: niz, ki ga želite uvoziti.

Overwrite: če je True, lahko v slovarju obstajajo istoimenski vnosi in njihove vrednosti bodo prepisane. Če je False (privzeto), ponovljeni ključi povzročijo napako. Upoštevajte, da pri ključih slovarja razlike med velikimi in malimi črkami ne štejejo, medtem ko ta razlika velja med imeni v množicah vrednosti lastnosti.

Primer:


            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)
            '(pod)slovarji "address" in "phoneNumbers" (0) in (1) se uvozijo kot vrednosti Empty.
        

ImportFromPropertyValues

Vstavi vsebino polja predmetov PropertyValue v trenutni slovar. Imena PropertyValue se uporabijo kot ključi (Keys) v slovarju, medtem ko Values vsebujejo ujemajoče vrednosti. Vrne True, če uspe.

Skladnja:


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

Parametri:

PropertyValues: ničelno 1-dimenzionalno polje, ki vsebuje predmete com.sun.star.beans.PropertyValue. Ta parameter je lahko tudi posamičen predmet PropertyValue, ki ni vsebovan v polju.

Overwrite: če je True, lahko v slovarju obstajajo istoimenski vnosi in njihove vrednosti bodo prepisane. Če je False (privzeto), ponovljeni ključi povzročijo napako. Upoštevajte, da ključi slovarja ne razlikujejo med velikimi in malimi črkami, medtem ko ta razlika med imeni velja v množicah vrednosti lastnosti.

Primer:


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

Item

Pridobi obstoječi vnos slovarja glede na njegov ključ. Vrne vrednost elementa, če uspe, sicer vrne Empty (angl. prazno).

Skladnja:


          myDict.Item(Key As String) As Variant
        

Parametri:

Key: ne razlikuje med velikimi in malimi črkami. Obstajati mora v slovarju, sicer javi napako UNKNOWNKEYERROR.

Primer:

Naslednji primer gre po vseh ključih v slovarju in uporablja metodo Item za dostop do njihovih vrednosti.


          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

Odstrani obstoječi vnos slovarja glede na njegov ključ. Vrne True, če uspe.

Skladnja:


          myDict.Remove(Key As String) As Boolean
        

Parametri:

Key: ne razlikuje med velikimi in malimi črkami. Mora obstajati v slovarju, sicer javi napako UNKNOWNKEYERROR.

Primer:


          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

Odstrani vse vnose iz slovarja. Vrne True, če uspe.

Skladnja:


          myDict.RemoveAll() As Boolean
        

Primer:


          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

Zamenja vrednost obstoječega elementa glede na njegov ključ. Vrne True, če uspe.

Skladnja:


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

Parametri:

Key: niz, ki predstavlja ključ, katerega vrednost bo zamenjana. Razlike med velikimi in malimi črkami niso upoštevane. Če ključ ne obstaja v slovarju, prikliče napako UNKNOWNKEYERROR.

Value: nova vrednost elementa, na katerega se sklicuje parameter Key.

Primer:


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

ReplaceKey

Zamenja obstoječi ključ v slovarju z novim ključem. Vrednost elementa ostane nespremenjena. Vrne True, če uspe.

Skladnja:


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

Parametri:

Key: niz, ki predstavlja ključ, ki bo zamenjan. Razlike med velikimi in malimi črkami niso upoštevane. Če ključ ne obstaja v slovarju, prikliče napako UNKNOWNKEYERROR.

Value: niz, ki predstavlja vrednost za novi ključ. Razlike med velikimi in malimi črkami niso upoštevane. Če novi ključ že obstaja v slovarju, prikliče napako DUPLICATEKEYERROR.

Primer:


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

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!