Hallo zusammen,
da ich auf die schnelle kein Dictionary in glbasic gefunden habe, hier ein einfaches Dictionary bzw. eine Hashmap für Strings.
Damit kann man sich zu einem String Schlüssel einen String Wert halten/holen
Z.B.
dic as Dictionary
dic.set("kuh","muh")
speichert für den wert "kuh" den wert "muh"
Hinterher kann man sich diesen wieder holen mit
dic.get$("kuh")
wenn man "kuh" nochmals setzen würde würde der wert einfach überschrieben werden.
dic.get liefert 0 wenn der wert nicht gefunden wurde
dic.clear löscht alle elemente
dic.count gibt die anzahl wieder
// --------------------------------- //
// Project: feuerware
// Start: Sunday, May 15, 2011
// IDE Version: 9.089
//GLOBAL dic AS Dictionary
//dic.set("a","b")
//dic.set("a","c")
//dic.set("d","edd")
//DEBUG dic.get$("a")
//DEBUG dic.get$("d")
//DEBUG dic.size()
//hashmap: "a" => "b"
TYPE Dictionary
keys$[]
values$[]
//adds or replace a key value pair
FUNCTION set: key$,value$
FOR i=0 TO LEN(self.keys$)-1
IF self.keys$[i] = key$
self.values$[i] = value$
RETURN
ENDIF
NEXT
//not found, redim
REDIM self.keys$[LEN(self.keys$)+1]
REDIM self.values$[LEN(self.values$)+1]
self.keys$[LEN(self.keys$)-1] = key$
self.values$[LEN(self.values$)-1] = value$
ENDFUNCTION
// returns 0 if doesnt exist
FUNCTION get$: key$
FOR i=0 TO LEN(self.keys$)-1
IF self.keys$[i] = key$
RETURN self.values$[i]
ENDIF
NEXT
RETURN 0
ENDFUNCTION
//how many key values are there?
FUNCTION size:
RETURN LEN(self.keys$)
ENDFUNCTION
//clears all items
FUNCTION clear:
REDIM self.keys$[0]
REDIM self.values$[0]
ENDFUNCTION
FUNCTION remove%: key$
FOR i=0 TO LEN(self.keys$)-1
IF self.keys$[i] = key$
DIMDEL self.keys$[],i
DIMDEL self.values$[],i
RETURN i
ENDIF
NEXT
RETURN -1
ENDFUNCTION
ENDTYPE
DDgui has something like that (and used it in the very first versions). Excellent work.
DDgui uses an insert sort algo so the finding of a key is a lot quicker.
@Kitty:
Wieso schreibst du im deutschen Forum zu einem deutschen Post ne englische Antwort? :D
cheers
Ich bin schon ganz verdreht... Sorry.