AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Währungsrechner funktioniert nicht

Ein Thema von rojhat2049 · begonnen am 20. Nov 2009 · letzter Beitrag vom 22. Nov 2009
 
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#13

Re: Währungsrechner funktioniert nicht

  Alt 21. Nov 2009, 12:22
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]));
...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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