![]() |
Re: Delphi Zinsrechner
So... Ersteinmal vielen Dank für die vielen Antworten.
Hat mir sehr geholfen muss ich sagen =) Zitat:
Bin an nem normalen Gymnasium und wie schon gesagt ist so ne art AG. Ohne den Lehrer würde es gar nicht angeboten werden. Zitat:
FormActivate und OnShow ? Zu meinem 2. Problem: Das habe ich nun so gelöst: [code=delphi] if code = 0 then begin Endkapital := (Round(100*(Anfangskapital * exp (Jahre * ln (1+ Zinssatz/100))))/100) ; // V erarbeitung Label2.Caption := FloatToStr (Endkapital) end //end if code = 0 else // A usgabe Showmessage ('Eingabefehler:' +#13+ 'Variable = Laufzeit' +#13+ 'Stelle =' +intToStr(code) +#13+ 'Falsches Zeichen=' + Edit3.text
Code:
Klappt auch einwandfrei. Mit einer Ausnahme: Es wird mir nur der Fehler angezeigt, wenn bei der Variablen 'Laufzeit' ein Fehler gemacht wurde. Allerdings will ich ja auch,dass wenn jemand bei der Variable 'Anfangskapital' eine falsche Eingabe macht eine Nachricht erhält.
+#13#13+
'Bitte Eingabe wiederholen...'); end; //end else Unser Lehrer hat das so gemacht: [code=delphi] begin try Anfangskapital := StrToFloat (edit1.text) ; Laufzeit.SetFocus ; except Val (edit1.text, wert, code); ShowMessage (‘Eingabefehler!’ +#13#13+ 'Variable = Anfangskapital' +#13+ 'Stelle = ' +IntToStr(code) +#13+ 'Falsches Zeichen=' + Edit1.text
Code:
Und dann einfach auch noch für die Laufzeit das gleiche mit der anderen Variable und dem anderen Editfeld.
+#13#13+
'Bitte Eingabe wiederholen...') Edit1.text := ’’ ; // oder Edit1.clear; Shortint(key) := 0 ; // EDIT!!!: Hier hat unser Lehrer gemeint, er weiss nicht wieso man das hier reinschreiben muss, damit es funktioniert. Naja ich denke mal dass es hier einige geben wird, die das wissen. Deshalb wäre ich sehr verbunden wenn mir das jemand erklären könnte ;) Also das " ShortInt(key) = 0; " meine ich. Edit1.SetFocus; end; Ich finde das allerdings umständlicher als es mit [delphi] if code = 0 then begin [...] else [...] end; [/delhpi] zu machen. Ist es zu kompliziert das bei mir jetz auch noch für die Variable 'Anfangskapital' einzubinden oder kann das ein Anfänger wie ich es bin verstehen? Falls ja dann wäre ich über weitere Vorschläge sehr dankbar! Noch einmal vielen Dank an das was bis jetzt vorgeschlangen wurde. Und ich hoffe niemand ist sauer dass ich nicht auf alle Vorschläge eingegangen bin ;) Mfg Siggy |
Re: Delphi Zinsrechner
OnShow wird aufgerufen wenn der Befehl Form1.Show ausgeführt wird.
Dieses passiert z.B. automatisch mit dem MainForm wenn die Anwendung startet. Wird das Formual versteckt (Form1.Hide) oder geschlossen (Form1.Close), dann kann ich es nur mit Form1.Show wieder zeigen und OnShow wird gefeuert. OnActivate wird immer dann gefeuert, wenn das Formular aktiviert wird. Also man wechselt zu einer anderen Anwendung und wechselt dann wieder zu dieser zurück, schupps wird OnActivate gefeuert. cu Oliver |
Re: Delphi Zinsrechner
Ah ok vielen Dank. Habe verstanden. Hätte ich auch drauf kommen können :D
Siggy |
Re: Delphi Zinsrechner
[code=delphi]begin
try Anfangskapital := StrToFloat (edit1.text) ; Laufzeit.SetFocus ; except Val (edit1.text, wert, code); ShowMessage (‘Eingabefehler!’ +#13#13+ 'Variable = Anfangskapital' +#13+ 'Stelle = ' +IntToStr(code) +#13+ 'Falsches Zeichen=' + Edit1.text
Code:
Sagte ich schon mal was zum Lehrer tauschen ... (Hildesheimer, da vergisst man nur die Hälfte) ...
+#13#13+
'Bitte Eingabe wiederholen...') Edit1.text := ’’ ; // oder Edit1.clear; Shortint(key) := 0 ; // EDIT!!!: Hier hat unser Lehrer gemeint, er weiss nicht wieso man das hier reinschreiben muss, damit es funktioniert. Naja ich denke mal dass es hier einige geben wird, die das wissen. Deshalb wäre ich sehr verbunden wenn mir das jemand erklären könnte ;) Also das " ShortInt(key) = 0; " meine ich. Edit1.SetFocus; end; Also ein try except end nehme ich eigentlich nur dann, wenn ich vorher keine Chance habe zu prüfen, ob denn auch alles richtig laufen wird (z.B. Abfrage eines Datenbank-Servers, der könnte während der Abfrage auch abrauchen) Für diesen speziellen Fall würde ich aber wie folgt prüfen
Delphi-Quellcode:
und schöne Grüße an den Lehrer, ist wie im Deutsch, da gibt es Duden, das mich auch ganz doll helft ...
if ( StrToFloatDef( Edit1.Text, -1 ) < 0 )
then begin ShowMessage( '' ); ... end; cu Oliver |
Re: Delphi Zinsrechner
Zitat:
bei der Umwandlung von dem Text im Edit1 Feld in eine Zahl gemacht wurde. Der Ausdruck 'Varible = Laufzeit' ist ein String, also feststehend [EDIT] Ach er meint wohl damit die Varible, der der Wert aus dem Edit Feld zugewiesen wurde. Ich hab es unten mal angepasst. Ich glaube ich bin jetzt etwas verwirrt :spin2: Jedenfalls solltest du bei 2 Edit Feldern auch zwei unterschiedliche Fehlercodes benutzen also das ganze sollte ungfähr so aussehen: [code=delphi] var Form1: TForm1; code,code2: Integer; [.....] procedure TForm1.Button1Click(Sender: TObject); begin try val (edit1.text, anfangskapital, code); // E ingabe val (edit3.text, Jahre, code2); [.....] if (code = 0) and (code2 = 0) then begin Endkapital := (Round(100*(Anfangskapital * exp (Jahre * ln (1+ Zinssatz/100))))/100) ; Label2.Caption := FloatToStr (Endkapital) end //end if code = 0 else Showmessage ('Eingabefehler:'+#13+ 'Variable = Anfangskapital' +#13+ 'Stelle im ersten Eingabefeld =' +FloatToStr(code) +#13+ 'Variable = Jahre' +#13+ 'Stelle im zweiten Eingabefeld =' +FloatToStr(code2) +#13+ 'Falsches Zeichen im ersten Eingabefeld=' + Edit1.text
Code:
Vielleicht hilft dir das etwas, es ist natürlich noch ausbaufähig ...
+#13+
'Falsches Zeichen im zweiten Eingabefeld=' + Edit3.text[code2]+#13+ 'Bitte Eingabe wiederholen...'); end; |
Re: Delphi Zinsrechner
Zitat:
![]() |
Re: Delphi Zinsrechner
Zitat:
|
Re: Delphi Zinsrechner
Ach und die Fehlerabfrage sollt gleich zu anfag beginnen und nicht wenn schon mit Werten
gerechnet wurde, also so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin try val (edit1.text, anfangskapital, code); // Eingabe val (edit3.text, Jahre, code2); if (code = 0) and (code2 = 0) then begin if Jahre <=4 then begin Zinssatz := 3; Label4.Caption := 'mit einem Zinssatz von 3%'; end [............] |
Re: Delphi Zinsrechner
Zitat:
|
Re: Delphi Zinsrechner
Liste der Anhänge anzeigen (Anzahl: 1)
So ich bins mal wieder =)
Habe jetz zuerst mal das hier probiert, da es mir am einfachsten erschien: [code=delphi] var Form1: TForm1; code: Integer; code2: Integer; Anfangskapital: Integer; Jahre: Integer; Endkapital: real; Zinssatz : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin try val (edit1.text, anfangskapital, code); // E ingabe val (edit3.text, Jahre, code2); if (code = 0) and (code2 = 0) then begin if Jahre <=4 then begin Zinssatz := 3; Label4.Caption := 'mit einem Zinssatz von 3%'; end //end Jahre <=4 else begin Zinssatz := 5; Label4.Caption := 'mit einem Zinssatz von 5%' ; end; //end Jahre >4 if Jahre >= 10 then begin Zinssatz := 7 ; Label4.Caption := 'mit einem Zinssatz von 7%' ; end; //end Jahre >= 10 begin Endkapital := (Round(100*(Anfangskapital * exp (Jahre * ln (1+ Zinssatz/100))))/100) ; // V erarbeitung Label2.Caption := FloatToStr (Endkapital) end //end if code = 0 end else // A usgabe MessageDlg ('Eingabefehler:' +#13#13+ 'Variable = Anfangskapital' +#13+ 'Stelle im ersten Eingabefeld = ' +intToStr(code) +#13#13+ 'Variable = Laufzeit' +#13+ 'Stelle im zweiten Eingabefeld = ' +intToStr(code2) +#13#13+ 'Falsches Zeichen im ersten Eingabefeld = ' + Edit1.text
Code:
Also das mit den 2 Codes. Habe dann aber als ich die .exe gestartet hab feststellen müssen, dass es bis jetzt nicht die beste Lösung ist.
+#13+
'Falsches Zeichen im zweiten Eingabefeld = ' + Edit3.text [code2]+#13#13+ 'Bitte Eingabe wiederholen...' +#13+ 'Nur ganze Zahlen (0-9) erlaubt!', mtWarning,[mbOK],0); except MessageDlg ('Felder dürfen nicht leer sein!'+#13+ 'Falls alle Felder ausgefüllt wurden bitte kleinere Werte benutzen',mtWarning,[mbOk],0); end;//end try - except end;//end procedure Es gibt leider das Problem, dass wenn NUR im Edit3 Feld ein Fehler auftritt und im Edit1 alles i.O. ist, dann wird nicht angezeigt wo der Fehler in Feld3 liegt. Ist jetz n bisschen kompliziert, deswegen hänge ich mal die .exe an. Ausserdem wird der letzte Teil der Fehlermeldung
Delphi-Quellcode:
auch nur dann angezeigt, wenn in beiden Edit Feldern ein Fehler gemacht wurde.
'Bitte Eingabe wiederholen...' +#13+
'Nur ganze Zahlen (0-9) erlaubt!', Ihr könnt euch das ja mal anscheun, falls jemand Zeit dazu findet. Is ja auch nicht unbedingt das wichtigste. Werde mich dann auch mal an den anderen 2 Vorschlägen versuchen wenn ich Zeit dazu finde und die Vorschläge verstehe :-D Mfg Siggy [edit=Admin]Beitragscache aktualisiert. Mfg, Daniel[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz