Einzelnen Beitrag anzeigen

Don Muhkuh

Registriert seit: 13. Okt 2012
4 Beiträge
 
Delphi 7 Personal
 
#1

Variable als Float definieren

  Alt 13. Okt 2012, 21:08
Hallo liebe Community,

das ist mein erster Post und ich habe ein Problem:

Ich will einen Währungsumrechner erstellen.
Dafür geb ich jeder Währung einen Wert, der für ihn steht, aber mein Problem ist,
dass man (meiner Erkenntnissen nach) Variablen nicht mit Float angeben kann (Die Wärungen haben einen Komma-Wert).
Dann habe ich probiert, die Zahlen einfach zu erhöhen (alle * 100000), um keine Komma-Zahlen zu bekommen.
Da ergab sich aber das Problem, dass die Ergebnisse keine Nachkommastellen hatten.

Hier ist der Code:

Delphi-Quellcode:
unit mWaehrungen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, Mask, Grids;

type
  TFWaehrungen = class(TForm)
    ImHintergrund: TImage;
    Bt1AusD: TBitBtn;
    Bt1Euro: TBitBtn;
    Bt1Fr: TBitBtn;
    Bt1KanD: TBitBtn;
    Bt1Peso: TBitBtn;
    Bt1Pfund: TBitBtn;
    Bt1Real: TBitBtn;
    Bt1USD: TBitBtn;
    Bt1Yen: TBitBtn;
    Bt1Yuan: TBitBtn;
    Bt1Zlo: TBitBtn;
    Bt2AusD: TBitBtn;
    Bt2Euro: TBitBtn;
    Bt2Fr: TBitBtn;
    Bt2KanD: TBitBtn;
    Bt2Peso: TBitBtn;
    Bt2Pfund: TBitBtn;
    Bt2Real: TBitBtn;
    Bt2USD: TBitBtn;
    Bt2Yen: TBitBtn;
    Bt2Yuan: TBitBtn;
    Bt2Zlo: TBitBtn;
    Ed1Laender: TLabeledEdit;
    Ed2Laender: TLabeledEdit;
    LiW1: TListBox;
    LiL1: TListBox;
    LiW2: TListBox;
    LiL2: TListBox;
    LiW3: TListBox;
    LiL3: TListBox;
    BtNachSeite: TButton;
    BtVorSeite: TButton;
    LaKurs: TLabel;
    LaAnfang: TLabel;
    LaEnde: TLabel;
    LaWEnde1: TLabel;
    LaWEnde2: TLabel;
    EdWaehrungA: TEdit;
    EdKurs: TEdit;
    EdWaehrungB: TEdit;
    BtTauschen: TButton;
    LaWAnfang: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BtVorSeiteClick(Sender: TObject);
    procedure BtNachSeiteClick(Sender: TObject);
    procedure Bt1EuroClick(Sender: TObject);
    procedure Bt2EuroClick(Sender: TObject);
    procedure Bt1USDClick(Sender: TObject);
    procedure Bt2USDClick(Sender: TObject);
    procedure Bt1PfundClick(Sender: TObject);
    procedure Bt2PfundClick(Sender: TObject);
    procedure Bt1FrClick(Sender: TObject);
    procedure Bt2FrClick(Sender: TObject);
    procedure Bt1ZloClick(Sender: TObject);
    procedure Bt2ZloClick(Sender: TObject);
    procedure Bt1KanDClick(Sender: TObject);
    procedure Bt2KanDClick(Sender: TObject);
    procedure Bt1AusDClick(Sender: TObject);
    procedure Bt2AusDClick(Sender: TObject);
    procedure Bt1YenClick(Sender: TObject);
    procedure Bt2YenClick(Sender: TObject);
    procedure Bt1YuanClick(Sender: TObject);
    procedure Bt2YuanClick(Sender: TObject);
    procedure Bt1PesoClick(Sender: TObject);
    procedure Bt2PesoClick(Sender: TObject);
    procedure Bt1RealClick(Sender: TObject);
    procedure Bt2RealClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FWaehrungen: TFWaehrungen;
  Waehrung_A, Waehrung_B: Integer;
  Seite: Byte;

implementation

{$R *.dfm}

procedure TFWaehrungen.FormCreate(Sender: TObject);
begin
  With ImHintergrund.Canvas Do
    begin
    Brush.Color := clGreen;
    Rectangle(0, 0, 800, 100);
    Brush.Color := clHighlight;
    Rectangle(0, 100, 800, 400);
    Brush.Color := clGreen;
    Rectangle(0, 400, 800, 500);
    end;
  Waehrung_A := 100000;
  Waehrung_B := 100000;
  Seite := 1;
  LiL2.Visible := False;
  LiW2.Visible := False;
  LiL3.Visible := False;
  LiW3.Visible := False;
  BtVorSeite.Enabled := False;
end;

procedure TFWaehrungen.BtVorSeiteClick(Sender: TObject);
begin
  Seite := Seite - 1;
  If Seite = 1 Then
    begin
    BtVorSeite.Enabled := False;
    BtNachSeite.Enabled := True;
    LiL1.Visible := True;
    LiW1.Visible := True;
    LiL2.Visible := False;
    LiW2.Visible := False;
    LiL3.Visible := False;
    LiW3.Visible := False;
    end;
  If Seite = 2 Then
    begin
    BtVorSeite.Enabled := True;
    BtNachSeite.Enabled := True;
    LiL1.Visible := False;
    LiW1.Visible := False;
    LiL2.Visible := True;
    LiW2.Visible := True;
    LiL3.Visible := False;
    LiW3.Visible := False;
    end;
end;

procedure TFWaehrungen.BtNachSeiteClick(Sender: TObject);
begin
  Seite := Seite + 1;
  If Seite = 2 Then
    begin
    BtVorSeite.Enabled := True;
    BtNachSeite.Enabled := True;
    LiL1.Visible := False;
    LiW1.Visible := False;
    LiL2.Visible := True;
    LiW2.Visible := True;
    LiL3.Visible := False;
    LiW3.Visible := False;
    end;
  If Seite = 3 Then
    begin
    BtVorSeite.Enabled := True;
    BtNachSeite.Enabled := False;
    LiL1.Visible := False;
    LiW1.Visible := False;
    LiL2.Visible := False;
    LiW2.Visible := False;
    LiL3.Visible := True;
    LiW3.Visible := True;
    end;
end;

procedure TFWaehrungen.Bt1EuroClick(Sender: TObject);
begin
  Waehrung_A := 100000;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWAnfang.Caption := 'Euro (Europa)';
  LaKurs.Caption := '1 Euro (Europa) =';
  LaKurs.Left := 190 - LaKurs.Width;
end;

procedure TFWaehrungen.Bt2EuroClick(Sender: TObject);
begin
  Waehrung_B := 100000;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWEnde1.Caption := 'Euro (Europa)';
  LaWEnde2.Caption := 'Euro (Europa)';
end;

procedure TFWaehrungen.Bt1USDClick(Sender: TObject);
begin
  Waehrung_A := 129373;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWAnfang.Caption := 'Dollar (Vereinigte Staaten)';
  LaKurs.Caption := '1 Dollar (Vereinigte Staaten) =';
  LaKurs.Left := 190 - LaKurs.Width;
end;

procedure TFWaehrungen.Bt2USDClick(Sender: TObject);
begin
  Waehrung_B := 129373;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWEnde1.Caption := 'Dollar (Vereinigte Staaten)';
  LaWEnde2.Caption := 'Dollar (Vereinigte Staaten)';
end;

procedure TFWaehrungen.Bt1PfundClick(Sender: TObject);
begin
  Waehrung_A := 80755;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWAnfang.Caption := 'Pfund (Großbritannien)';
  LaKurs.Caption := 'Pfund (Großbritannien) =';
  LaKurs.Left := 190 - LaKurs.Width;
end;

procedure TFWaehrungen.Bt2PfundClick(Sender: TObject);
begin
  Waehrung_B := 80755;
  EdWaehrungB.Text := FloatToStr(StrToFloat(EdWaehrungA.Text) * (Waehrung_B Div Waehrung_A));
  EdKurs.Text := FloatToStr(Waehrung_B Div Waehrung_A);
  LaWEnde1.Caption := 'Pfund (Großbritannien)';
  LaWEnde2.Caption := 'Pfund (Großbritannien)';
end;

.
.
.

end.
Und noch andere Währungen (Das ist nur das Schema).

Wie bekomme ich jetzt Komma-Zahlen als Ergebnis,
wenn ich keine Variablen als Float definieren kann
und das Ergebnis (Waehrung_B Div Waehrung_A) anscheinend auch nur als Integer gewertet wird?
(Waehrung_A und Waehrung_B sind das einzige Problem,
sonst funktioniert alles.)
Danke im Vorraus

P.S.: Eine Bild des Programms ist bei den Anhängen. Den rechten Teil bitte ignorieren, das wird erst später eingebaut.

Mit freundlichen Grüßen, Don Muhkuh
Angehängte Grafiken
Dateityp: jpg Programm.jpg (28,9 KB, 6x aufgerufen)

Geändert von Don Muhkuh (13. Okt 2012 um 21:16 Uhr) Grund: Anhang hinzugefügt
  Mit Zitat antworten Zitat