"Jens Stål" <Jens@cue.dk> skrev:
>Dvs Dynamisk vil jeg kunne bestemme hvilket felt jeg vil have .....
>Tricky stuff
Det er umuligt i C og nok også i C++. Variabler (dvs også members i en
struct) bindes på compileringstidspunktet. Du må bide i det sure æble og
lave det på en anden måde. Hvis du ønsker at bruge navne-metoden kan det
fx gøres således:
>> jens.Name = "Jens Stål";
>> jens.Email = "Jens@cue.dk";
>> AnsiString N = "Name";
>> jens.&N; /* Som skal komme til at svare til 'jens.Name'
if ((strcmp(N, "Name") == 0) { /* eller lignende under C++ */
x = jens.Name;
} etc
Under C++ kan du indkapsle den funktionalitet som jens.member(Name),
hvor member-metoden så indeholder sammenlignings-koden og smider den
rette streng tilbage. I C må du lave det som en funktion.
Hvis strcmp el.lign er for tung så brug en anden, smartere måde at finde
frem til den rette streng på. Fx ved at bruge et array af strenge som
indekseres af en enum-type, dvs i stil med jens.member[PERSON_NAME] (nok
indkapslet i en metode/funktion, der checker at indekset er ok).
--
Richard Flamsholt
richard@flamsholt.dk -
www.richard.flamsholt.dk