When you have an array you can simply loop through the contents to examine what's there, but when you have a dictionary you need to have the list of keys so that you can look up each value in the dictionary. For that, we need a getKeys$() function. The following function returns a single string with the keys from our global dictionary$ variable, each separated by a delimiter that we can specify.
function getKeys$(delimiter$)
pointer = 1
while pointer > 0
'get the next key
pointer = instr(dictionary$, "~key~", pointer)
if pointer then
keyPointer = pointer + 5
pointer = instr(dictionary$, "~value~", pointer)
key$ = mid$(dictionary$, keyPointer, pointer - keyPointer)
if instr(keyList$, "~key~" + key$) = 0 then
getKeys$ = getKeys$ + key$ + delimiter$
keyList$ = keyList$ + "~key~" + key$
end if
end if
wend
end function
Once have this string we can tease out each key. Here is an quick example that shows how to do this. The variable allKeys$ will hold all the keys, each separated by "~". Then we use the word$() function to get each key.
global dictionary$
call setValueByName "first", "Tom"
call setValueByName "last", "Thumb"
call setValueByName "phone", "555-555-1234"
allKeys$ = getKeys$("~")
print allKeys$
key = 1
while word$(allKeys$, key, "~") <> ""
key$ = word$(allKeys$, key, "~")
print "Key number "; key; " is "; key$
print " value = "; getValue$(key$)
key = key + 1
wend
Here is what the resulting output looks.
phone~last~first~
Key number 1 is phone
value = 555-555-1234
Key number 2 is last
value = Thumb
Key number 3 is first
value = Tom
Notice that the keys do not come out in the order that we put them in. This is typical in dictionary style lookup mechanisms. The ordering of keys is not guaranteed.
Friday, July 15, 2016
Subscribe to:
Posts (Atom)