![]() |
variablenzugriff über string
Hallo,
gibt es eine in Delphi eine Datenstruktur, in der man über einen String auf seine Attribute zugreifen kann? Etwa so: Struktur('einName') := 4; oder auch so: variable := Objekt.getElementByName('einName'); Gibt es sowas in der Art? Danke! |
Re: variablenzugriff über string
Nein, sowas bringt Delphi nicht mit.
btw: Diese Konstrukte werden üblicherweise als "Dictionary" oder "assioziatives Array" bezeichnet. Bis neulich ... |
Re: variablenzugriff über string
Sicherlich ist sowas möglich und für einige Komponenten auch implementier. Und zwar über Array-Properties.
Einfach in der delphi-Hilfe nach "Array-Eigenschaften" suchen. z.B. Values-Property von TStrings. Bei ![]() |
Re: variablenzugriff über string
Sowas gibt es:
TStringList und die Property "Values". Dort allerdings 'nur' als String, also so:
Delphi-Quellcode:
Eine Dictionary-Klasse (von mir :mrgreen:) finste hier:
Var
aList : TStringList; Begin aList := TStringList.Create; aList['MyName']:='Foo'; aList['MyAge'] := '8'; End; ![]() |
Re: variablenzugriff über string
man könnte dafür eine Stringliste nutzen. Die Zahl hängt man dann einfach als Object an das Item. Und zugriff geht dann über Stringlist.IndexOf
|
Re: variablenzugriff über string
alzaimar: :shock: jetzt programmiere ich schon 4 Jahre mit Delphi aber das ist mir noch nicht untergekommen. Hab mit stattdessen ebenfalls ein eigenes Dictionary gebaut.
Wieder was dazugelernt. Bis neulich ... |
Re: variablenzugriff über string
Das TStringList.Values Teil ist natürlich sehr langsam [O(N)], da ich aber etwas schnelleres brauchte, hab ich mir eben das Teil mit O(1) gebaut.
|
Re: variablenzugriff über string
Zitat:
|
Re: variablenzugriff über string
|
Re: variablenzugriff über string
@BlackJack: Der Speicherverbrauch ist ca. 20 Bytes pro Eintrag. Im Jahr 2005 eigentlich nebensächlich. Wie viele Einträge brauchst Du denn?
|
Re: variablenzugriff über string
Zitat:
|
Re: variablenzugriff über string
Ich behaupte mal, daß ich gelesen hätte in der JCL gäbe es eine Hashklasse. Kann aber sein, daß die im offiziellen Release noch nicht drin ist (also erst im CVS).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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