Wie auch immer, auf jedenfall konnte ich schon erfolgreich die
orginale csDictionary verwenden. Ich hab mit grossen Zahlen gerechnet -
mpArith von Wolfgang Ehrhardt. Das BigNumberErgebnis wollte ich zusammen mit einem Integer in eine Hashtable schreiben.
Wenn man die bigNumber als String ausgibt kann man sie problemlos im Stringdictionary verwenden. Es ist praktisch, dass man Strings verschiedener Länge ohne Performanceverlust verwenden kann, da ja einfach gehasht wird.
Und mit deinem Pointertrick konnte ich den zugehörigen Integer speichern und wieder lesen. Danke!!!
Delphi-Quellcode:
var dummy:pointer;
begin
j:=someinteger;
IF TestHash.Add (Wert, Pointer(j)) then ...
TestHash.Find (Zahl, dummy);
j:=integer(dummy)
end;
Zwei Sachen:
- Dein "Pointertrick" ist cool. Aber wie lautet die Syntax die für den 2. Parameter normalerweise vorgesehen ist? (Übergibt man die Adresse eines Arrayelements um diese bei .Find wiederzubekommen?)
- dict.add als function statt als procedure ist wirklich eine starke Verbesserung! Vielleicht würde es Alzeimar einbauen?!
PS: Wen's interessiert, interessehalber hab ich dieselbe Hashmap danach mit Generics.collections inplementiert. Die Syntax ist sehr ähnlich, die Funktionalität auch und die resultierende Geschwindigkeit für 1 Mio. Einträge auch. Evtl. ist Generics um geschätzte 2-3 Prozent schneller. Zeigt, dass alzeimar hier einen guten Job geliefert hat.