2008-10-07 10 views
9

Kennen Sie eine gute und freie Hashtable-Implementation für Delphi 5?Hashtable-Implementierung für Delphi 5

Ich muss eine große Menge an Daten in einer Hastable organisieren und ich bin etwas besorgt über Speicherverluste, die ich in den meisten verfügbaren Implementierungen im Web gefunden habe.

Tks

Antwort

10

Sie können auch die Open-Source/früher kommerzielle TurboPower SysTools überprüfen. Nicht sicher, wie viel es aktualisiert wird. An einem Punkt empfahl Julian Bucknall es über seine EZDSL library, obwohl das zurück war, als er noch für TurboPower arbeitete und es gepflegt/aktualisiert wurde.

+1

Eigentlich Turbo-Powers LockBox ist wahrscheinlich, was er will, die neueste Version ist unter http://www.songbeamer.com/delphi/ aktualisiert – skamradt

+2

LockBox macht kryptografisches Hashing - SysTools und EZDSL tun Hashtables, die eine Datenstruktur sind. –

1

können Sie versuchen, in Koders suchen.
Here Sie haben eine einfache Implementierung (Winjab project), oder this von JCL.

HINWEIS: Lesen Sie die Lizenz für Codes, bevor Sie sie verwenden.

3

EZDSL ist eine Bibliothek von Datenstrukturen, einschließlich einer Hash-Tabelle, geschrieben von Julian Bucknall von TurboPower und DevExpress ... Ich habe sie nicht benutzt, aber ich hätte hohe Erwartungen an den Code dieses Typen.

http://www.boyet.com/FixedArticles/EZDSL.html

+0

Ich habe EZDSL seit Jahren mit eingeschrumpften Anwendungen verwendet und der Code ist sehr gut. Gute Leistung, keine Bedenken wegen Speicherlecks. –

3

Sie können meine GpStringHash versuchen. Garantiert keine Speicherlecks, funktioniert aber nur mit Strings. I denke, sollte es in D5 funktionieren.

0

Peter Below hat gerade eine Überarbeitung von etwas, was er getan hat, an die Embarcadero newgroups im public.attachments geschickt. Es gibt etwas unter seinem Profil auf der CodeGear-Website unter http://cc.codegear.com/Item/24825, das beschreibt es.

0

Checkout DeCAL, die Hash-Tabellen und mehr Datenstrukturen enthält.

0

Neben der eigentlichen Implementierung der Hash-Tabelle ist auch die Hash-Funktion wichtig, die selbst verwendet wird.

Ein guter ist eine Hash-Funktion von Bob Jenkins, read his paper here.

Dieser Algorithmus wurde kürzlich für Fälle verbessert, in denen die Eingabe DWord-Größe (See the C-version of it here) ist. Diese Version ist schneller und führt zu zwei 32-Bit-Hashwerten anstelle von einem. (Dieser zweite Hash-Wert könnte zum Beispiel verwendet werden, um die Auswahl zu beschleunigen.)

Für die Interessenten könnte ich die Delphi-Übersetzung hier einfügen? (Es ist etwa 170 Zeilen Code.)

0

RBS Antidot ist eine sehr gute Bibliothek von Containern (einschließlich Hash-basierte UnsortedMap).