Hmmm, nun ja, da sind noch überflüssige Sachen drin, die da raus können.
Und laut der Textaufgabe ist da etwas falsch umgesetzt (hatte ich aber auch falsch interpretiert
)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Dauer, Alter :Integer;
Praemie : Real; // ein sprechender Name hilft gegen Verwirrungen :o)
begin
// erst mal die Werte aus dem Formular holen
Dauer := StrToInt( Edit1.Text );
Alter := StrToInt( Edit2.Text );
// Jetzt die Berechnung
if ( Dauer < 10 ) then
begin
Praemie := 100;
// Die Abfrage ( Dauer < 10 ) ist nicht falsch, aber überflüssig
// da wir dieses ja schon hier sicherstellen
if ( Dauer > 3 ) { and ( Dauer < 10 ) } then
Praemie := Praemie + ( 50 * ( Dauer - 3 ) );
end
else
begin
Praemie := Dauer * 60;
end;
if ( Alter >= 50 ) then
Praemie := Praemie + ( Praemie / 2 );
// Jetzt das Ergebnis ausgeben
Edit3.Text := FloatToStr( Praemie );
end;
So funktioniert das, wenn in den beiden Edit-Feldern Eingaben enthalten sind, die auch in Integer umgewandelt werden können.
Um das abzufangen bietet sich
TryStrToInt an.
Der entsprechende Teil sähe dann so aus:
Delphi-Quellcode:
// erst mal die Werte aus dem Formular holen
if not TryStrToInt( Edit1.Text, Dauer ) or not TryIntToStr( Edit2.Text, Alter ) then
begin
// Hinweis ausgeben
ShowMessage( 'Keine gültige Eingabe!' );
// Verlassen
Exit;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)