Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Delphi Aufgabe - Prämien

  Alt 8. Feb 2012, 15:51
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 Delphi-Referenz durchsuchenTryStrToInt 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)
  Mit Zitat antworten Zitat