Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Delphi noob braucht Hilfe (Schleifen)


ZeroJoker - Fr 24.03.06 15:20
Titel: Delphi noob braucht Hilfe (Schleifen)
Hallo,

ich bin ein Neuling in Delphi und brächte eine Hilfestellung bei folgendem Problem:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
  VArray= Array [1..6of integer;
...

procedure TForm1.Bu_StartClick(Sender: TObject);
var i:integer;
    tipp:VArray;
begin
  for i:= 1 to 6 do
  Tipp[i]:=form1.spinedit(>><<).value;
  end;
end;


Ich möchte, dass an der Stelle (>><<) die Variable i eingesetzt wird, sodass im 1. Schleifendurchlauf Spinedit1.value ansgelesen wird, im 2. Duchlauf dann Spinedit2.value,...


Ist das möglich?



Danke

ZeroJoker

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconTino: B- durch Highlight-Tags ersetzt


Born-to-Frag - Fr 24.03.06 15:25

Schau dir mal FindComponent(); an ;)


greetz


ZeroJoker - Fr 24.03.06 16:20

Hi,

danke schonmal, brauche aber nochmal Hilfe.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Bu_StartClick(Sender: TObject);
var i:integer;
    tipp:VArray;
    spineditname:string;
begin
  spineditname:='Spinedit'+inttostr(i);
  for i:= 1 to 6 do
  begin
  Tipp[i]:=strtoint (form1.FindComponent(spineditname)as TSpinEdit.value);
  end;
end;


Ich bekomme als Fehlermeldung: "Methodenbezeichner erwartet".


Danke

ZeroJoker

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt


Delete - Fr 24.03.06 16:42

Hi ZeroJoker. :wave:

Ich bin mir nicht sicher, aber vielleicht klappts, wenn du noch eine Klammer um den As-Ausdruck setzt.
Außerdem solltest du das setzen von spineditname in die Schleife verschieben, da spineditname sonst immer 'Spinedit0' enthält.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Bu_StartClick(Sender: TObject);
var
  i : integer;
  tipp : VArray;
  spineditname : string;
begin
  for i := 1 to 6 do
  begin
    spineditname := 'Spinedit' + IntToStr(i);
    Tipp[i] := (Form1.FindComponent(spineditname) as TSpinEdit).Value;
  end;
end;


Edit@Born-To-Frag: :oops: Das kommt davon, wenn man vor dem Posten nicht in die Onlinehilfe schaut... :oops: Habs korrigiert.


Born-to-Frag - Fr 24.03.06 16:54

user profile iconWaldteufel hat folgendes geschrieben:
Hi ZeroJoker. :wave:

Ich bin mir nicht sicher, aber vielleicht klappts, wenn du noch eine Klammer um den As-Ausdruck setzt.
Außerdem solltest du das setzen von spineditname in die Schleife verschieben, da spineditname sonst immer 'Spinedit0' enthält.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Bu_StartClick(Sender: TObject);
var
  i : integer;
  tipp : VArray;
  spineditname : string;
begin
  for i := 1 to 6 do
  begin
    spineditname := 'Spinedit' + IntToStr(i);
    Tipp[i] := StrToInt((Form1.FindComponent(spineditname) as TSpinEdit).value);
  end;
end;


Stimmt auch nicht nicht ganz:

Value ist schon ein Integer, also ist StrToInt(); überflüssig ;)

Wenn du es in eine Zeile schreiben willst kannst du auch


Delphi-Quelltext
1:
2:
  for i := 1 to 6 do
    Tipp[i] := TSpinEdit(Form1.FindComponent('SpinEdit' + IntToStr(i))).Value;


schreiben.. mit As geht natürlich auch in eine Zeile ..

@Waldteufel: Wenn er i ganz oben schreibt ist i nicht unbedingt 0 ;)


greetz


ZeroJoker - Fr 24.03.06 17:27

Hi,

japs, geht wunderbar, ich danke für die schnelle Hilfe.



Danke

ZeroJoker