![]() |
Hashtable in Delphi
Hallo zusammen,
kennt jemand solch eine Klasse oder Komponente? Uwe |
Re: Hashtable in Delphi
Hai Uwe,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hello: Eventuell ist ja ![]() |
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? |
Re: Hashtable in Delphi
|
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! |
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)?
|
Re: Hashtable in Delphi
Ach würde mir eine Klasse implementieren, die einen String hält (und vielleicht noch mehr Informationen)
Delphi-Quellcode:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz