AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hashmap oder ähnlich...

Ein Thema von Weazy · begonnen am 12. Jan 2009 · letzter Beitrag vom 12. Jan 2009
Antwort Antwort
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#1

Hashmap oder ähnlich...

  Alt 12. Jan 2009, 13:33
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?
Philippe Wechsler
  Mit Zitat antworten Zitat
worker
(Gast)

n/a Beiträge
 
#2

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 13:38
THashedStringList
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 13:52
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...
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 13:56
Zitat von worker:
THashedStringList
btw: steht in der Unit IniFiles

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)
  Mit Zitat antworten Zitat
worker
(Gast)

n/a Beiträge
 
#5

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 14:15
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.

DeineList.Values[DeinDateiname]); gibt Dir die (in diesem Fall) Größe der ersten gefundenen Datei mit diesem Namen.

Eine Suche über Angabe der Größe funktioniert so natürlich nicht; wurde aber auch nicht nach gefragt
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 14:49
Was genau meinst du mit Name=Value (Dateiname=Größe)?
Philippe Wechsler
  Mit Zitat antworten Zitat
worker
(Gast)

n/a Beiträge
 
#7

Re: Hashmap oder ähnlich...

  Alt 12. Jan 2009, 14:57
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:
DeineListe.Add(Format('%s=%d', [Dateiname, Dateigröße])); Würdest Du Dir diese Liste dann in eine Datei schreiben sähe das Ganze so aus:

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
DeineListe.Values['Datei2']); Das Ergebnis wäre in diesem Fall 512.

DU kannst Dir auch mal den TValueListEditor anschauen - der visualisiert so etwas.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf