/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hvordan sammen sættes en function ud fra s~
Fra : Jens Stål


Dato : 28-11-00 18:20




struct Person
{
AnsiString Name;
AnsiString Email;
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Person jens;
jens.Name = "Jens Stål";
jens.Email = "Jens@cue.dk";

AnsiString N = "Name";
AnsiString E = "Email";

jens.&N; /* Som skal komme til at svare til 'jens.Name' Men det virker
ikke*/
}




 
 
kheon (29-11-2000)
Kommentar
Fra : kheon


Dato : 29-11-00 08:54

"Jens Stål" wrote:

> struct Person
> {
> AnsiString Name;
> AnsiString Email;
> };
>
> void __fastcall TForm1::Button1Click(TObject *Sender)
> {
> Person jens;
> jens.Name = "Jens Stål";
> jens.Email = "Jens@cue.dk";
>
> AnsiString N = "Name";
> AnsiString E = "Email";
>
> jens.&N; /* Som skal komme til at svare til 'jens.Name' Men det virker
> ikke*/
>

Har du prøvet dette:
AnsiString S = "Navn: " jens.Name + ", Mail: " + jens.Email;



N/A (30-11-2000)
Kommentar
Fra : N/A


Dato : 30-11-00 08:51



Morten Klostergaard (30-11-2000)
Kommentar
Fra : Morten Klostergaard


Dato : 30-11-00 08:51


"Igor V. Rafienko" <igorr@ifi.uio.no> skrev i en meddelelse
news:xjv3dga8vov.fsf@ganglot.ifi.uio.no...
> * kheon@vision.auc.dk
>
> [snip]
>
> > Har du prøvet dette:
> > AnsiString S = "Navn: " jens.Name + ", Mail: " + jens.Email;
>
>
> Det kan umulig fungere, men mindre kompilatoren har et _veldig_ sært
> rammeverl for string concatenation.
>

AnsiString S = "Navn: " + jens.Name + ", Mail: " + jens.Email;

Denne her duer. (Der manglede lige et plus)

\MK

OBS: Den duer kun med Borland C++ AnsiStrings.
>
>
>
>
> ivr, nei ikke særlig nyttig idag
> --
> Partial Nudity is allowed by female users.



Jens Stål (29-11-2000)
Kommentar
Fra : Jens Stål


Dato : 29-11-00 09:08

Det er ikke helt det jeg vil opnå.....

Jeg vil kunne hente et af felterne fra struct Person. Hvilket felt det skal
være bestemmer variablen N (som f.eks indeholder "Name" og altså er det Name
feltet jeg vil have)

Dvs Dynamisk vil jeg kunne bestemme hvilket felt jeg vil have ..... Tricky
stuff

"Jens Stål" <Jens@cue.dk> wrote in message
news:900pfq$143m$1@news.net.uni-c.dk...
>
>
>
> struct Person
> {
> AnsiString Name;
> AnsiString Email;
> };
>
> void __fastcall TForm1::Button1Click(TObject *Sender)
> {
> Person jens;
> jens.Name = "Jens Stål";
> jens.Email = "Jens@cue.dk";
>
> AnsiString N = "Name";
> AnsiString E = "Email";
>
> jens.&N; /* Som skal komme til at svare til 'jens.Name' Men det
virker
> ikke*/
> }
>
>
>



Richard Flamsholt (29-11-2000)
Kommentar
Fra : Richard Flamsholt


Dato : 29-11-00 22:23

"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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste