Autor Beitrag
AgeArtmann
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 15.06.08 00:10 
Hallo Leute,

hab jetzt 2 Stunden im Internet gesucht. Vielleicht ist es ja ganz einfach aber ich komme gerade nicht drauf.

ich möchte bei einem Array als Schlüssel nicht wie Standardmäßig Integer nehmen, sondern einfach einen String:

Standard: ArrayName[0]:=xyz_typ;

Ziel: ArrayName['EinString']:=xyz_typ;

So wäre es zum Beispiel möglich durch eine Eingabe des Benutzers (ArrayName[eingabe:String]) den xyz Rückgabewert zu erhalten...


Ich hoffe es ist klar geworden, was ich ereichen möchte.

Es gibt sicherlich die Möglichkeit das Ganze zu umgehen, allerdings muss das ja nicht sein vor allem, da es bei anderen Programmiersprachen Gang und Gebe ist auch so Array abrufen/definieren.

Vielen Dank für eure Hilfe
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 15.06.08 00:18 
Delphi kennt keine assoziative Arrays wie z.B. Php. Du könntest es mit einer ValueList versuchen

_________________
Markus Kinzler.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 15.06.08 11:00 
Würde ich auch vorschlagen. ValueList1.Values['hallowelt'] entspricht ja eigentlich einem assoziativen Array. Alternative wäre, sich so etwas selbst zu basteln.

Man müsste die Schlüssel selbst erzeugen und den Speicher dort reservieren.. Vielleicht lässt sich das so arrangieren, dass es als Unit eingebunden werden kann. IMHO arbeitet eine ValueList doch mit Textverarbeitung :gruebel:

Wäre die Frage, inwiefern das schneller wäre. Aber die ValueList ist definitiv einfacher.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
AgeArtmann Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 15.06.08 11:08 
Alles klar

Vielen Dank für eure Hilfe.

Werde es mit ValueList machen. Scheint der einfachste Weg zu sein. Wundert mich allerdings schon, dass Delphi so rückständig auf diesem Gebiet ist.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 15.06.08 11:12 
Moin!

Der Vollständigkeit halber: man kann das auch als (Array-)Eigenschaft einer Klasse abbilden. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 15.06.08 17:39 
user profile iconAgeArtmann hat folgendes geschrieben:
Wundert mich allerdings schon, dass Delphi so rückständig auf diesem Gebiet ist.

Das liegt wohl daran, dass assoziative Arrays nicht so ganz "logisch" sind. Wenn du ein Array array[0..5] of Typ definierst, hat es ja genau 6 Einträge. Bei einem dynamischen Array kann sich die Größe ändern - sie ist aber trotzdem immer noch fest definiert.

Wenn du jetzt aber ein Array mit Strings definieren willst, dann sieht das ganz anders aus: Wie viele Einträge hat das jetzt? Theoretisch 256^2147483648. So viele Möglichkeiten gibt es nämlich für einen String. Natürlich kann das so nicht klappen - da muss einiges mehr programmiert werden. Und genau das tut eine ValueList.

Grüße,
Yogu
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 15.06.08 23:06 
user profile iconAgeArtmann hat folgendes geschrieben:
Wundert mich allerdings schon, dass Delphi so rückständig auf diesem Gebiet ist.

Es wird zwar nicht von Haus aus fertig mitgeliefert aber man kann es schon selbst programmieren. Die ValueList ist eine visuelle Komponente und nicht unbedingt für den nicht-visuellen Gebrauch gedacht. Das eigentliche Problem von Delphi ist, dass es (noch) keine Generics kennt und einige wichtige Klassen fehlen.

user profile iconYogu hat folgendes geschrieben:
Wenn du jetzt aber ein Array mit Strings definieren willst, dann sieht das ganz anders aus: Wie viele Einträge hat das jetzt? Theoretisch 256^2147483648. So viele Möglichkeiten gibt es nämlich für einen String. Natürlich kann das so nicht klappen - da muss einiges mehr programmiert werden. Und genau das tut eine ValueList.

Also bei deiner Kombinatorik bin ich nicht einverstanden ;) Ausserdem müsste ein array[string] of string ja nicht zwingend so implementiert sein, wie du eben angedeutet hast.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 16.06.08 17:05 
user profile icondelfiphan hat folgendes geschrieben:
Ausserdem müsste ein array[string] of string ja nicht zwingend so implementiert sein, wie du eben angedeutet hast.

Ich meinte nur, dass Delphi sehr viel logischer aufgebaut ist wie zum Beispiel C oder PHP. Meiner Meinung nach wäre es nicht sinnvoll, solche Dinge in die Delphi Grundsprache einzubauen, es ist sehr viel übersichtlicher, wenn das eine Klasse tut.