Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array über mit String als "Index"? (https://www.delphipraxis.net/169577-array-ueber-mit-string-als-index.html)

jaenicke 30. Jul 2012 15:53

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von Pow3rus3r (Beitrag 1176324)
Die Daten bestehen aus:
1.) Datensatzname
2.) 16 einzelnen Hexadezimalzahlen, die auch einzeln ansprechbar sein müssen

Da ist ein TObjectDictionary mit einem String und einer Klasse darin am besten. Denn dann kannst du entweder nur einen einzelnen Wert ansprechen, klar, oder aber auch die Daten zu einem Datensatz einmal suchen und dann alle Werte dazu benutzen ohne erneut zu suchen.

Wobei bei der geringen Anzahl der Datensätze die Frage ist, ob man da nicht noch anders herangehen kann. Aber dafür fehlen detailliertere Informationen wie (und wie oft) auf die Daten zugegriffen wird.

Uwe Raabe 30. Jul 2012 23:09

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von Pow3rus3r (Beitrag 1176324)
Die Daten bestehen aus:
1.) Datensatzname
2.) 16 einzelnen Hexadezimalzahlen, die auch einzeln ansprechbar sein müssen

Dann sähe die Deklaration etwas so aus:

Delphi-Quellcode:
type
  TDatensatz = array[0..15] of Integer; // oder auch 1..16, Byte, Word, String oder was auch immer

var
  Datenbank: TDictionary<string, TDatensatz>;

var
  gibHer: Integer;

begin
  // Zugriff auf Zeile "Name1", Wert 5
  gibHer := Datenbank['name1'][5];
end;

tgvoelker 30. Jul 2012 23:46

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von Pow3rus3r (Beitrag 1176291)
hallo zusammen,

ich habe eine große Menge Daten, die ich in ein Array laden will, was z.B. so aussieht:

[0]: Name1, 5, 18, 24, 58
[1]: Name2, 4, 32, 55, 23
...

Dabei sind mir die "Namen" jederzeit bekannt und ich würde das Array gerne über die Datensatznamen ansprechen. normal muss ja immer die Zeilennummer des Array angegeben werden. Gibt es da evtl. eine Möglichkeit, das ganze ohne eine Schleife o.ä. zu realisieren?

Danke und Gruß
Thomas

Würde ich als Descendant von TStringList implementieren. Im Constructor Sorted auf True, Duplicates auf dupError und OwnsObjects auf True. Die Daten selber als Objekt implementieren (class of TObject). Wäre meiner Ansicht nach am streßfreiesten.

himitsu 31. Jul 2012 01:23

AW: Array über mit String als "Index"?
 
Nja, wozu eine TStringList misbrauchen, wenn es das Dictionary gibt?
Und dazu noch als Generic, wo man bei der TStingList ständig alles selber (unsicher) casten muß. (abgesehn davon, wenn man alles via AS casten würde)

Furtbichler 31. Jul 2012 05:06

AW: Array über mit String als "Index"?
 
TDictionary gibt es ja nur für neuere Delphi bzw. nicht für das alte Zeugs.

Ich habe nur BDS2006 und muss mir mit einer Hashmap helfen. die hier im Forum rumgeistert.

himitsu 31. Jul 2012 08:02

AW: Array über mit String als "Index"?
 
http://www.delphipraxis.net/132817-u...ler-e2506.html
Generics raus und dafür einen festen Typen verwendet ... da sollte es auch locker noch unter D2006 laufen können.

jaenicke 31. Jul 2012 08:06

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von Furtbichler (Beitrag 1176391)
TDictionary gibt es ja nur für neuere Delphi bzw. nicht für das alte Zeugs.

Ich habe nur BDS2006 und muss mir mit einer Hashmap helfen. die hier im Forum rumgeistert.

THashedStringList gab es da ja schon.

tgvoelker 31. Jul 2012 08:17

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von himitsu (Beitrag 1176384)
wozu eine TStringList misbrauchen

;) Viele Wege führen nach Rom.
Zitat:

Zitat von himitsu (Beitrag 1176384)
wenn es das Dictionary gibt?

Da gefallen mir die Haare nicht. Davon abgesehen habe ich irgendwann mal mit Turbo Pascal 4 angefangen, neue Sachen verwende ich nur, wenn die "alten" nicht funktionieren für eine Sache oder ein Jungspund etwas komisch mit einem Dictionary implementiert. Was der Bauer nicht kennt und so.

jaenicke 31. Jul 2012 09:19

AW: Array über mit String als "Index"?
 
Zitat:

Zitat von tgvoelker (Beitrag 1176411)
Zitat:

Zitat von himitsu (Beitrag 1176384)
wozu eine TStringList misbrauchen

;) Viele Wege führen nach Rom.

Ja, richtig. Nur ist es eben schon ein Unterschied, ob man auf einer Straße mit einem Großsteinpflaster oder auf einer asphaltierten Autobahn fährt. :lol:
Ich für meinen Teil nehme dann doch eher die Autobahn, es sei denn ich bin im Urlaub und will mir Zeit lassen.

tgvoelker 31. Jul 2012 12:07

AW: Array über mit String als "Index"?
 
Der Vergleich hinkt nicht nur, der lahmt. Der Vorteil eines TStringList-Descendants ist die Zuweisungskompatibilität zu Items von Listboxen, Comboboxen u.ä.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.
Seite 2 von 3     12 3      

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