Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Fehler bei Dateneingabe (https://www.delphipraxis.net/157613-fehler-bei-dateneingabe.html)

snboy2010 18. Jan 2011 11:11

Fehler bei Dateneingabe
 
Hallo. Ich habe ein folgendes Problem. Schreibe gerade ein Programm. Der Queltext für den Button sieht so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aktpreis, ver100ben, jahrkm, ausgabevbj, ausgabebkj : real;
begin
    aktpreis := StrToFloat(Edit6.Text);
    ver100ben := StrToFloat(Edit3.Text);
    jahrkm := StrToFloat(Edit4.Text);
    ausgabevbj := VerbrauchBenzinJahr(ver100ben, jahrkm);
    ausgabebkj := BenzinkostenJahr(aktpreis, ausgabevbj);

    Panel1.Caption := FloatToStr(ausgabevbj);
    Panel4.Caption := FloatToStr(ausgabebkj);

end;
Wenn ich jetzt das Programm starte funktioniert es eigentlich. Aber es sind kleine Fehler. Wenn ich keine Daten in den Edit-Feldern habe und dann den Button anklicke kommt immer eine Fehlermeldung. Ebenfalls muss ich die Zahlen duch Komma schreiben. Also z.B. 1,2 bei 1.2 kommt ebenfalls eine Fehlermeldung. Was kann ich da jetzt machen?

DeddyH 18. Jan 2011 11:13

AW: Fehler bei Dateneingabe
 
Schließe Delphi-Code bitte künfig in Delphi-Tags ein. Und Du könntest Dir Delphi-Referenz durchsuchenTryStrToFloat oder Delphi-Referenz durchsuchenStrToFloatDef einmal anschauen.

p80286 18. Jan 2011 11:22

AW: Fehler bei Dateneingabe
 
Try... wurde ja schon genannt.
Und in Deutschland werden Dezimalbrüche nuneinmal mit , geschrieben.
Wenn Du hierfür den Punkt nutzen willst, dann solltest du Deinem Rechner klarmachen, das er in den USA steht. Dann ist aber auch das Datumsformat ein anderes.
Du könntest aber auch gleich das Format der Eingabe überprüfen und das richtige Format an Dein Programm weiter reichen.

Gruß
K-H

DeddyH 18. Jan 2011 11:26

AW: Fehler bei Dateneingabe
 
Beide genannten Funktionen sind überladen, so dass man auch das Format übergeben kann.

snboy2010 18. Jan 2011 19:30

AW: Fehler bei Dateneingabe
 
Hallo. Ok ich habe es jetzt so gemacht:
Code:
var aktpreis, ver100ben, jahrkm, ausgabevbj, ausgabebkj : real;
begin
    aktpreis := tryStrToFloat(Edit6.Text);
Es kommt aber die folgende Fehlermeldung:
There is no overloaded version of 'TryStrToFloat' that can be called with these arguments.

Muss ich TryStrToFloat irgendwo definieren? Sorry aber programmieren ist nicht meine Stärke. Ich mache es nur für die Schule.

mkinzler 18. Jan 2011 19:33

AW: Fehler bei Dateneingabe
 
Dann schau dir mal an, wie die Funktion deklariert ist
http://docs.embarcadero.com/products...ng@Double.html

rollstuhlfahrer 18. Jan 2011 19:36

AW: Fehler bei Dateneingabe
 
Und gib bitte deinen Komponenten aussagekräftige Namen. Mit Edit1-6 wirst du in 1-2 Wochen nichts mehr anfangen können oder du schaust jedes mal nach, wie das Feld heißt.

Bernhard

snboy2010 18. Jan 2011 19:42

AW: Fehler bei Dateneingabe
 
Sprich ich muss diese SysUtils in den Queltext implemetieren?

mkinzler 18. Jan 2011 19:52

AW: Fehler bei Dateneingabe
 
Nein, nur Einbinden und dann miut den richtigen Parametern und Rückgabewert aufrufen.

snboy2010 18. Jan 2011 20:39

AW: Fehler bei Dateneingabe
 
Ok. Habe es so gelöst
Code:
procedure TForm1.Button1Click(Sender: TObject);
var aktpreis, ver100ben, jahrkm, ausgabevbj, ausgabebkj : double;
begin
  if TryStrToFloat(Edit6.Text,aktpreis) then
    begin
      //ShowMessage('Ungültige Eingabe');
      aktpreis := StrToFloat(Edit6.Text);
    end
  else
   begin
      ShowMessage('HAHA');
    end;
    //aktpreis := StrToFloat(Edit6.Text);
    ver100ben := StrToFloat(Edit3.Text);
    jahrkm := StrToFloat(Edit4.Text);
    ausgabevbj := VerbrauchBenzinJahr(ver100ben, jahrkm);
    ausgabebkj := BenzinkostenJahr(aktpreis, ausgabevbj);

    Panel1.Caption := FloatToStr(ausgabevbj);
    Panel4.Caption := FloatToStr(ausgabebkj);

end;
Funktioniert auf jeden Fall.
Könnt Ihr mir bitte noch erklären wie das gemeint war, dass ich Dezimalzahlen auch mit Punkt schreiben kann. Also das beides funktioniert sowohl , als auch . ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Seite 1 von 6  1 23     Letzte »    

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