Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Hashtable in Delphi (https://www.delphipraxis.net/115444-hashtable-delphi.html)

Cogito 12. Jun 2008 07:37


Hashtable in Delphi
 
Hallo zusammen,

kennt jemand solch eine Klasse oder Komponente?

Uwe

Sharky 12. Jun 2008 08:13

Re: Hashtable in Delphi
 
Hai Uwe,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hello:

Eventuell ist ja das hier etwas für dich?

Cogito 12. Jun 2008 09:11

Re: Hashtable in Delphi
 
Hi Sharky,

vielen Dank für die freundliche Begrüßung! :hi:
Das sieht schon mal recht gut aus, kannst du mir mal ein Beispiel für die Nutzung geben? Bin nicht so der Delphi-Freak...
Besonders gehts mir um die Add-Methode des TStringDictionary, dort wird als 2 Parameter ein Pointer erwartet. Wie sieht das in der praktischen Nutzung aus?

Sharky 12. Jun 2008 09:25

Re: Hashtable in Delphi
 
Ich selber habe es auch noch nicht gemacht.

Aber Du kannst ja mal den Autor fragen.

alzaimar 12. Jun 2008 10:17

Re: Hashtable in Delphi
 
Hallo,

Die Hashmap (oder Dictionary) speichert irgendeine Nutzerinformation 'Data' zu einem Schlüssel (hier: String). Ein Lexikon speichert ja z.B. eine Beschreibung (Data) zu einem Stichwort, ein Wörterbuch die z.B. englische Übersetzung etc.

Du bist für dieses 'Data' zu ständig.

Wenn Du z.B. eine Liste von Objekten implementieren willst, dann übergibtst Du immer eine Instanz des Objektes.

Aber wenn Du z.B. wissen willst, ob ein bestimmter Schlüssel schon verwendet wurde, dann übergibst Du einfach 'Nil'.

Grüße vom Autor. :zwinker:

Noch Fragen? Fragen!

Cogito 12. Jun 2008 10:51

Re: Hashtable in Delphi
 
Ich möchte gerne eine Übersetzungstabelle aus der Datenbank in diese Hashtable einlesen, wobei die analog ein Key und ein Value Feld hat. Das Value Feld ist ein varchar. Wie würde nun ein solches einlesen aus der DB in deine Hashtable exemplarisch aussehen, kannst du mir hier ein Beispiel geben (ich hab hier Probleme mit dem data-pointer parameter)?

alzaimar 12. Jun 2008 10:57

Re: Hashtable in Delphi
 
Ach würde mir eine Klasse implementieren, die einen String hält (und vielleicht noch mehr Informationen)
Delphi-Quellcode:
Type
  TMyData = Class
  Public
    Property StringValue : String;
    Property AnotherValue : Double;
  End;

...
procedure AddDataRecordToHashMap (aSD : TStringDictionary; aDataSet : TDataset);
Var
  d : TMyData;
  sKey : String;


Begin
  d := TMyData.Create;
  d.StringValue := aDataset['SomeStringValueFieldName'];
  d.AnotherValue := aDataset['AFloatFieldName'];

  sKey := aDataset['KeyFieldName'];
  aSD.Add(sKey, d);
End;
Du musst den Speicher aber selbst aufräumen. Also entweder packst Du alle TMyData in eine eigene TObjectList und gibst diese TObjectList frei (OwnsObject = True), oder Du iterierst durch die Hashmap und gibst alle 'Data'-Instanzen selbst frei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz