Avatar billede r.hegaard Nybegynder
12. januar 2003 - 21:25 Der er 7 kommentarer og
2 løsninger

Sammensætte navne

Er du muligt at sammensætte navne i delphi, så man i stedet for at skrive:
Edit1.Text:=tal[1];
Edit2.Text:=tal[2];
Edit3.Text:=tal[3];
Edit4.Text:=tal[4];
kunne skrive noget i retning af:
for i:=1 to 4 do begin
  Edit+i:=tal[i];
end;
så man ikke behøver at gentage samme kode igen og igen, bare med forskellige tal. Er det muligt at lave noget der kan erstatte Edit+i, så det kommer til at virke ????
Avatar billede erikjacobsen Ekspert
12. januar 2003 - 21:34 #1
Nej, ikke som du skriver det (man i fx PHP, men det er en anden sag)

Du kan imidlertid løbe alle komponenterne på en form igennem,
og check om deres navne starter med 'Edit', finde det
efterfølgende tal, og så lave din tilordning,
Avatar billede speedy Nybegynder
12. januar 2003 - 21:37 #2
jo, der er faktisk en function til det :)

Den hedder findcomponent (men den gør som erikjacobsen siger. Altså løber alle componenterne igennem).

  for i := 1 to 4 do
  begin
    (FindComponent('Edit' + IntToStr(i)) as TEdit).Text := IntToStr(Tal[i]);
  end;


/SpEeDy
Avatar billede speedy Nybegynder
12. januar 2003 - 21:39 #3
Selvfølgelig er det ikke lige så hurtigt som at kalde dem direkte ved hjælp af deres rigtige navn.

Men der skal dog utrolig mange edit-felter til før at det kan mærkes at det går langsommere...

/SpEeDy
Avatar billede lemvigh Nybegynder
12. januar 2003 - 21:40 #4
Nej, du kan ikke behandle navne på den måde i Delphi. Det du dog kan gøre er at oprette et array af TEdits, så kan du iterere igennem det. Det kræver dog en initialisering, hvor du skal igennem tildelingerne, men efter det er du flyvende. Gør noget i stil med:

editArray: array[1..MAX] of TEdit;

editArray[1] := Edit1;
editArray[2] := Edit2;

...

for i:= 1 to MAX do
  editArray[i].Text := tal[i];
Avatar billede r.hegaard Nybegynder
12. januar 2003 - 21:48 #5
speedy > Jeg vil lige prøve det af med FindComponent.
lemvigh > Kan du ikke uddybe dit svar med editArray lidt ?? Jeg er ikke helt med på hvad du mener med at det kræver en initialisering. Hvordan opretter man et array af TEdits ??
Avatar billede lemvigh Nybegynder
12. januar 2003 - 21:56 #6
Du opretter et array af TEdits på samme måde, som du ville oprette et hvilket som helst andet array. Under *var* skriver du f.eks.: eArray: array[1..5] of TEdit. Så har du et array af TEdits. Defter skal du tildele hver post i arrayet en værdi -nemlig de egentlige TEdits, du har til at ligge på din form. Linjen:
eArray[1] := Edit1;
gør netop dette. Nu kan du tilgå Edit1 via denne post i arrayet. Når du skriver
eArray[1].Text := 'blib blob'
så bliver teksten i Edit1 på din form sat til 'blib blob'.
Avatar billede r.hegaard Nybegynder
13. januar 2003 - 11:43 #7
lemvigh > Jeg kan ikke få det til at virke....
Jeg har oprettet edit1-4 og skrevet:
initialization
begin
  editArray[1] := Edit1;
  editArray[2] := Edit2;
  editArray[3] := Edit3;
  editArray[4] := Edit4;
end;
Så skriver den:
[Error] Unit1.pas(48): Undeclared identifier: 'Edit1'
[Error] Unit1.pas(49): Undeclared identifier: 'Edit2'
[Error] Unit1.pas(50): Undeclared identifier: 'Edit3'
[Error] Unit1.pas(51): Undeclared identifier: 'Edit4'
Hvad har jeg gjort forkert ??
Avatar billede speedy Nybegynder
13. januar 2003 - 11:47 #8
Hmmm...hvis vi nu tager den helt forfra :) Du skal placere dine 4 edit-komponenter på formen. Derefter skal du lave en global variabel som ser sådan her ud:

var
  editArray: array[1..4] of TEdit;

i din onCreate på formen skriver du så hvad du har skrevet:

  editArray[1] := Edit1;
  editArray[2] := Edit2;
  editArray[3] := Edit3;
  editArray[4] := Edit4;

/SpEeDy
Avatar billede r.hegaard Nybegynder
13. januar 2003 - 11:49 #9
OK, tak for hjælpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester