Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi if then problem beim taschenrechner (https://www.delphipraxis.net/103441-if-then-problem-beim-taschenrechner.html)

konrad28 15. Nov 2007 19:19


if then problem beim taschenrechner
 
Hallo,
also die erfahrenen Programmierer hier werden müde lächeln aber ich hab grad erst angefang mich mit Delphi zu beschäftigen.
Und zwar wollte ich einen Taschenrechner programmieren (klein anfangen :-D ), und hab das auch hingekriegt ich habe nur noch 2 Fragen.

Und zwar 1. Ich will das wenn man durch null teilen will eine Meldung in einem vorher verstecktem
Memo-Fenster erscheint das diese Rechenoperation nicht durchführbar ist.
Bislang kommt nämlich immer eine "unverständliche" Fehlermeldung und das Programm hängt
sich auf. Ich habe ein bischen mit "If-When" Formulierung rumprobiert, aber da
sich mein Wissen in engen Grenzen hält bin ich da hängen geblieben.
Das hier ist das was ich bisher hab
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var a,b,c, y: real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
c:=a/b;
if y=0
then memo1.Show
else a:=b/y;
edit3.Text:=floattostr(c);
end;
Das mit der If Then Kombi beruht auf einem Freund, ich sollte auch bei "Uses" "Math"
hinschreiben. Falls das hilft...

Und 2. Ich habe ebenfalls vorgesehen eine "b-te Wurzel einer Zahl 'a'" zu ziehen. Hier habe
ich wieder auf Anraten desselbigen Kumpels folgende Formulierung gewählt.
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var a,b,c:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
c:=power(b,a/a);
edit3.Text:=floattostr(c);
end;

end.

Danke im Vorraus für die Hilfe!
Mfg Konrad28

Apollonius 15. Nov 2007 19:24

Re: if then problem beim taschenrechner
 
:wiejetzt: Also entweder hat dieser Freund dich veräppelt, oder er hat keine Ahnung.
Delphi-Quellcode:
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
if b=0 then
  Showmessage('Durch 0 darf nicht geteilt werden!')
else
begin
  Edit3.Text:=Floattostr(a/b);
end;
Das sieht für mich irgendwie logischer aus. Denn in deinem Code wird eine nicht initialisierte Variable abgefragt, nachdem der Fehler schon passiert ist. Übrigens sollte man StrToFloat vermeiden, da bei ungültiger Eingabe ein Fehler geschmisen wird, besser wären StrToFloatDef und TryStrToFloat.

Zum anderen Problem ein kleiner Tipp: Die n-te Wurzel einer Zahl ist als a^(1/n) definiert. :dp:
[edit] Herzlich willkommen! [/edit]

konrad28 15. Nov 2007 20:57

Re: if then problem beim taschenrechner
 
Zitat:

Das sieht für mich irgendwie logischer aus. Denn in deinem Code wird eine nicht initialisierte Variable abgefragt, nachdem der Fehler schon passiert ist.
hehe ja da hat ich mich auch schon gewundert.

Zitat:

Übrigens sollte man StrToFloat vermeiden, da bei ungültiger Eingabe ein Fehler geschmisen wird, besser wären StrToFloatDef und TryStrToFloat.
hab ich auch mitgekriegt, wär sicher meine nächste Frage gewesen^^ danke!

Zitat:

Zum anderen Problem ein kleiner Tipp: Die n-te Wurzel einer Zahl ist als a^(1/n) definiert.
:roll: hatte mich vertippt schlechthin :roll:


naja jedenfalls danke für die tipps werds gleich ma ausprobiern
mfg konrad

konrad28 15. Nov 2007 21:11

Re: if then problem beim taschenrechner
 
hmm ok das klappt schunmal mit der meldung,
so jetzt um das ganze abzuschließen wärs toll wenn mir no jemand sagen könnte wie ich dann diesen prozess abbreche denn nach erscheinen der message kommt die gleiche fehlermeldung wie ohne fenster^^.
hier noch mal mein code
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var a,b,c: real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
if b=0 then
   showmessage('Durch "0" darf nicht geteilt werden!')
else;
c:=a/b;
edit3.Text:=floattostr(c);

end;
mfg konrad

mkinzler 15. Nov 2007 21:13

Re: if then problem beim taschenrechner
 
Delphi-Quellcode:
if b=0 then
   showmessage('Durch "0" darf nicht geteilt werden!')
else
begin
   c:=a/b;
   edit3.Text:=floattostr(c);
end;

konrad28 16. Nov 2007 15:38

Re: if then problem beim taschenrechner
 
schönen dank für die hilfe!
mfg konrad


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz