Entwickler-Ecke

Sonstiges (Delphi) - Prozedur x-fach ausführen


tmkb - Di 25.06.02 17:25
Titel: Prozedur x-fach ausführen
Hallo,

wie kann ich es realisieren, dass ich eine bestimmte Prozedur so oft ausführe, wie es in edit1.text bestimmt ist?
thx
TMKB


Teutobod - Di 25.06.02 17:38

Hi,

ich würde statt Edit eine SpinEdit-Komponente verwenden
(mit Edit halt strtoint(Edit1.text))


Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
  for i:=0 to SpinEdit1.Value-1 do
  showmessage('hallo');
end;


mfg Teutobod


Ice - Di 25.06.02 21:35

Hi !
ich würde es ähnlich machen :
1. mit strtoint(Edit1.text) wert ermitteln
2. for i=0 to Wert do
Prozeduraufruf
end;
jetzt müsste die schleife bis zum gewünschten wert durchlaufen.

Marco


Torsten - Di 25.06.02 22:53

Moinsen!

Die Variante mit SpinEdit ist sicherlich besser, da hier nicht die Eingabe abgefragt werden muss.
Das ist zwar bei einem TEdit auch nicht viel, aber immerhin.

Grüße

Torsten


Arakis - Mi 26.06.02 01:10
Titel: spin.dcu
Also ich habe eine schlechte Erfahrung mit der SpinEdit-Komonente gemacht: Alle Programme, die ich damals in Delphi 6 Personal geschrieben und ein SpinEdit benutzt haben, beschweren sich in der Delphi 6 Enterprise, es fände die Datei Spin.dcu nicht. Grrr.

Bis dann
user defined image


Torsten - Mi 26.06.02 06:57

Moinsen!

Hmm, eigenartig. Das müsste man glatt mal testen.

Es spricht aber auch nix gegen andere Komponenten. Man muss nur eben aufpassen, dass man eine vernünftige Fehlerbehandlung einbaut.

Grüße

Torsten


Alfons-G - Mi 26.06.02 10:14

Am einfachsten ist immer noch

Quelltext
1:
2:
3:
4:
5:
6:
7:
try
  intZahl := StrToInt(Trim(Edit1.Text));
except
  intZahl := 0;
  Beep;
  // evtl. mit Dialogbox Fehler anzeigen
end;
Alternativ kann man natürlich im OnKeyPress-Ereignis des TEdit gleich die Tasten abfangen, um unzulässige Zeichen zu vermeiden. Das ist dann die elegantere Methode.

:idea:


Torsten - Mi 26.06.02 10:30

Ja, genau.

Beispielsweise so:


Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin 
if not (Key in['0' .. '9' ]) xor (Key=Char(VK_BACK))then
 Key:=#0;
end;


Grüße

Torsten


L.E.A. - Do 27.06.02 11:37

Hallo.
Das geht auch ohne try-except oder OnKey...:



Quelltext
1:
 intZahl := StrToIntDef(Edit1.Text, defaultZahl);                    


Wobei du hier als defaultZahl entweder einen Standardwert nehmen kannst oder darüber die Fehlerbehandlung machst.
z.B.:

Quelltext
1:
2:
3:
4:
 
intZahl := StrToIntDef(Edit1.Text, -1);
if intZahl = -1 then
  Fehlerbehandlung;


Ciao
L.E.A.