![]() |
Hashmap oder ähnlich...
Hallo, ich habe folgendes Problem: ich muss immer einen String und einen Integer oder int64 zusammen abspeichern können. Derzeit habe ich es so gelöst, dass ich einfach zwei dynamische arrays habe, eines für die Strings und eines für die zahlen. Ich möchte nun nach einem String im array suchen und wenn dieser String existiert die passende zahl ausgeben. Meine Lösung funktioiert auch, doch gibts da nicht etwas effizientere`s? In Java gabs eine Hashmap, gibt es so was ähnliches in Delphi?
|
Re: Hashmap oder ähnlich...
THashedStringList
|
Re: Hashmap oder ähnlich...
Danke, das hilft mir schon mal, jedoch brauche ich noch etwas womit ich nicht einfach den index, sondern eine selbst definierbare zahl eingeben kann. Die einträge sid dateinamen mit grössen angabe...
|
Re: Hashmap oder ähnlich...
Zitat:
In der Unit Contrns gibt es noch TObjectBucketList und diverse Abwandlungen, die können ganze Objekte speichern und zuordnen - das geht mit einer THashedStringList nicht mehr wirklich schön. Und ab Delphi 2009 steht so etwas auch als Generic zur Verfügung (ich meine TDictionary<T> oder so ähnlich) |
Re: Hashmap oder ähnlich...
Du schreibst, dass Du nach einem Dateinamen suchen, und Dir dazu die Größe ausgeben lassen möchtest; und das kannst Du doch mit der HashedStringList, wenn Du das Ganze als Name=Value (Dateiname=Größe) speicherst.
Delphi-Quellcode:
gibt Dir die (in diesem Fall) Größe der ersten gefundenen Datei mit diesem Namen.
DeineList.Values[DeinDateiname]);
Eine Suche über Angabe der Größe funktioniert so natürlich nicht; wurde aber auch nicht nach gefragt ;) |
Re: Hashmap oder ähnlich...
Was genau meinst du mit Name=Value (Dateiname=Größe)?
|
Re: Hashmap oder ähnlich...
Prinzipiell kannst Du die Daten in Deiner Stringliste speichern, wie Du lustig bist.
Wenn man aber Daten hat, wie es nun bei Dir der Fall ist, eine Eigenschaft A (hier der Dateiname), der eine Eigenschaft B (hier die Dateigröße) zugeordnet ist, dann bieten die Listen an, diese Daten im Format Name=Wert zu speichern. Und diese Speicherung ermöglicht dann das schnelle Suchen nach diesen Daten. Füge einfach Deine Datensätze mit der Add-Methode zu Deiner Liste hinzu, bspw. so:
Delphi-Quellcode:
Würdest Du Dir diese Liste dann in eine Datei schreiben sähe das Ganze so aus:
DeineListe.Add(Format('%s=%d', [Dateiname, Dateigröße]));
Dateiname=Dateigröße also z.B.: Datei1=243 Datei2=512 Datei3=98 Möchtest Du nun die Größe von Datei2 haben, fragst Du einfach ab mittels
Delphi-Quellcode:
Das Ergebnis wäre in diesem Fall 512.
DeineListe.Values['Datei2']);
DU kannst Dir auch mal den TValueListEditor anschauen - der visualisiert so etwas. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 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