Warum einfach wenns auch kompliziert geht.
Warum benutzt du
Val(edt1.text, kurs, code);
...
1. alte Routine, viel besser ist StrToFloat oder noch besser
if not TryStrToFloat(edt1.text, kurs) then !Fehler bei der Eingabe!
damit hast du gleich einen Test ob der Benutzer eine Zahl eingegeben hat
2. warum das ganze 3 mal, dann ist in kurs ja nur der Wert vom letzten Textfeld
Dann noch
Str(euro/kurs:8:2,s);
,da finde ich die Format Function besser.
Hier, wie ich es machen würde:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
dollar,
kurs : Single;
begin
if TryStrToFloat(edt1.text, dollar)
and
TryStrToFloat(edt2.text, kurs)
then
begin
edt3.text := Format('
%f', [dollar / kurs]));
end
else
ShowMessage('
keine Zahl eingegeben');
// oder irgend eine ander sinvolle Meldung
end;
procedure TForm1.btn2Click(Sender: TObject);
var
euro,
kurs : Single;
begin
if TryStrToFloat(edt3.text, euro)
and
TryStrToFloat(edt2.text, kurs)
then
begin
edt1.text := Format('
%f', [euro * kurs]));
end
else
ShowMessage('
keine Zahl eingegeben');
// oder irgend eine ander sinvolle Meldung
end;
end.
Da die beiden Click-Funktionen fast gleich sind, sollte man sie zu einer Funktion zusammendampfen:
Delphi-Quellcode:
procedure TForm1.btnClick(Sender: TObject);
var
Waehrung,
kurs : Single;
begin
if Sender = btn1
then
eingabe_ok := TryStrToFloat(edt1.text, Waehrung)
else
eingabe_ok := TryStrToFloat(edt3.text, Waehrung);
if eingabe_ok and
TryStrToFloat(edt2.text, kurs)
then
begin
if Sender = btn1
then
edt1.text := Format('%f', [Waehrung * kurs]))
else
edt3.text := Format('%f', [Waehrung / kurs]));
...