Eine kleine Hashtabelle (jetzt ohne Speicherlecks!)
Verfasst: 18.10.2006 21:46
Hi Leute!
Ich hab heute mal eine kleine Hashtabelle gecodet, die ich für meine
Datenbank benötige. Ich hab daraus aber ein eigenes Interface gemacht,
damit man sie auch so benutzen kann.
Man kann einem Long, Quad, Float, Double, String oder Speicherbereich ein
Long zuweisen, das man zurückerhält, wenn wieder das selbe Long, usw.
angibt. Da das alles wahlweise über MD5 oder CRC32 funktioniert, kann es
natürlich zu Überschneidungen kommen, wodurch es mehr als nur einen
Rückgabewert geben kann, die man abfragen kann.
Ich hab die Codes auf meinen Lycos-Webspace gepackt und ihr könnt mal
testen.
///Edit 1:
+Added: DelL(), DelQ(), DelS(), DelF(), DelD(), DelM() zum Löschen eines Eintrags durch Angeben von Long, Quad, String, ... und ID
+Added: DelL_IgnID(), DelQ_IgnID(), ... zum Löschen eines Eintrags durch Angeben von Long, Quad, ... und keiner ID
+Added: Clear() leert die ganze Hashtabelle
+Added: Gibt den Speicher wieder frei und das Interface ist nicht mehr benutzbar
///Edit 2:
+Added: ChangeL(), ... zum Ändern der ID eines Eintrags
+Added: ChangeL_IgnID(), ... ignoriert auch die ID und ändert die ID eines Eintrags
///Edit 3:
+Added: SetHashCallback() zum Setzen einer eigenen Hash-Funktion
+Added: CountEntries() gibt die Anzahl der Einträge zurück
Im Beispiel ist auch ein Callback zum Demonstrieren der Hashfunktion
enthalten. Und die Hashfunktion ist auch noch selbst gemacht.
///Edit 4:
Speicherleck in fast allen Funktionen gefunden und eliminiert.
Der Dank geht an Ingo Platte.
HT.pbi (Das Interface)
Link funktioniert nicht, weil Lycos letztes Jahr alles gelöscht hat.
Beispiele.pb (Das Beispiel)
(Entweder einfach draufklicken oder "Ziel speichern unter...")
Ich hab heute mal eine kleine Hashtabelle gecodet, die ich für meine
Datenbank benötige. Ich hab daraus aber ein eigenes Interface gemacht,
damit man sie auch so benutzen kann.
Man kann einem Long, Quad, Float, Double, String oder Speicherbereich ein
Long zuweisen, das man zurückerhält, wenn wieder das selbe Long, usw.
angibt. Da das alles wahlweise über MD5 oder CRC32 funktioniert, kann es
natürlich zu Überschneidungen kommen, wodurch es mehr als nur einen
Rückgabewert geben kann, die man abfragen kann.
Ich hab die Codes auf meinen Lycos-Webspace gepackt und ihr könnt mal
testen.
///Edit 1:
+Added: DelL(), DelQ(), DelS(), DelF(), DelD(), DelM() zum Löschen eines Eintrags durch Angeben von Long, Quad, String, ... und ID
+Added: DelL_IgnID(), DelQ_IgnID(), ... zum Löschen eines Eintrags durch Angeben von Long, Quad, ... und keiner ID
+Added: Clear() leert die ganze Hashtabelle
+Added: Gibt den Speicher wieder frei und das Interface ist nicht mehr benutzbar
///Edit 2:
+Added: ChangeL(), ... zum Ändern der ID eines Eintrags
+Added: ChangeL_IgnID(), ... ignoriert auch die ID und ändert die ID eines Eintrags
///Edit 3:
+Added: SetHashCallback() zum Setzen einer eigenen Hash-Funktion
+Added: CountEntries() gibt die Anzahl der Einträge zurück
Im Beispiel ist auch ein Callback zum Demonstrieren der Hashfunktion
enthalten. Und die Hashfunktion ist auch noch selbst gemacht.

///Edit 4:
Speicherleck in fast allen Funktionen gefunden und eliminiert.
Der Dank geht an Ingo Platte.

HT.pbi (Das Interface)
Link funktioniert nicht, weil Lycos letztes Jahr alles gelöscht hat.
Beispiele.pb (Das Beispiel)
(Entweder einfach draufklicken oder "Ziel speichern unter...")