Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Edit-Feld auf Inhalt überprüfen (https://www.delphipraxis.net/8499-edit-feld-auf-inhalt-ueberpruefen.html)

Chaozu 6. Sep 2003 12:43

Re: Edit-Feld auf Inhalt überprüfen
 
Lucki, die übliche fehlermeldung war diese hier:
'' ist kein gültiger Gleitkommawert

Ich habe mal die Lösung von Darty versucht und das hat einwandfrei funktioniert! :) Da hab ich auch direkt verstanden wie das angeordnet werden muss, aber trotzdem danke an alle anderen! ;)

Wenn ich jetzt keine Zahl eingeb, dann kommt eine Meldung sprich showMessage mit: " Du hast keinen Betrag eingegeben! "

Wenn ich jetzt aber Buchstaben reinschreibe, dann kommt die Meldung: " '' ist kein gültiger Gleitkommawert"

Kann man das auch noch ändern?

grayfox 6. Sep 2003 13:05

Re: Edit-Feld auf Inhalt überprüfen
 
hallo chaozu!

Zitat:

dass meine edit.text überprüft wird, ob was geschrieben wurde, bevor ich auf OK klicke
dann schreib die prüfroutine in den OnExitEvent ed TEdit-feldes. dieser wird nach einem foukus-wechsel aufgerufen.

irgenwie scheint mir in deiner überprüfung auf zahleneingaben der wurm drin zu sein ;)
versuchs mal so

Delphi-Quellcode:
{$UNTESTED}
  tmpvalue: double;
begin
  try
    tmpvalue:= StrToFloat(EditFeldName.text)
  except
    on E: EConvertError do
      ShowMessage('keine zahl eingegeben');
end;
ACHTUNG: StrToFloat verweigert den tausenderpunkt. aber F1-benutzer wissen das ohnehin :wink:

mfg, stefan

Matze 6. Sep 2003 14:39

Re: Edit-Feld auf Inhalt überprüfen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zahl: real;
begin
  try
    Zahl:=StrToFloat(Edit1.Text);
    //Hier kommt der Code rein,
    //wenn's eine Gleitkommazahl ist
  except
    ShowMessage('keine Zahl eingegeben');
  end;
end;
Das Komma [,] darf in einem Edit kein Punkt [.] sein.

Luckie 6. Sep 2003 15:32

Re: Edit-Feld auf Inhalt überprüfen
 
Mit val kann man das sehr schön ohne try-except lösen, einfach den Fehlercode abfragen.

Chaozu 6. Sep 2003 22:56

Re: Edit-Feld auf Inhalt überprüfen
 
Irgendwie versteh ich die letzten 3 Antworten net :|

Vielleicht hilfts ja, wenn ich mal die Unit1 poste. Also hier is nur ein Teil von 2...ich hab nämlich 2 Buttons und 2 edit.text! Einen für Euro -> DM und einen für DM -> Euro

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

// Umrechnung Mark in Euro

 // Variablendefinition
 var Mark, Euro : double;
begin

  if edit1.text <> '' then
    begin // Code, wenn etwas hinein geschrieben wurde

    // Eingabe in das Eingabefeld wird in der Variablen Mark abgespeichert
    Mark := StrToFloat(edit1.text);

    // Umrechnung in Euro
    Euro:=0.51129*Mark;

    // Ausgabe des Ergebnisses
    showMessage('Betrag in Euro: '+FloatToStrF(Euro,ffNumber,10,2));

    end
  else
    begin // Code, wenn nichts hinein geschrieben wurde

      showMessage ('Du hast keinen Betrag eingegeben!');

    end
end;

Sharky 7. Sep 2003 08:02

Re: Edit-Feld auf Inhalt überprüfen
 
Hai Chouzu,

Zitat:

Zitat von Chaozu
Wenn ich jetzt aber Buchstaben reinschreibe, dann kommt die Meldung: " '' ist kein gültiger Gleitkommawert"

und dann versuchst Du mit diesem Code:

Zitat:

Zitat von Chaozu

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
.
.

  if edit1.text <> '' then
    begin // Code, wenn etwas hinein geschrieben wurde
    Mark := StrToFloat(edit1.text);
.
.
.

den Inhalt des Editfeldes in eine (Float)Zahl zu wandeln.

Also... mal überlegen... Im Edit steht ein Buchstabe und Du möchtest daraus eine Zahl machen. Das kann nicht gehen.

In den obigen Antworten wird einfach eine "Fehlerbehandlung" eingebaut die den Laufzeitfehler "unterdrückt".

Besser wäre es aber die Eingabe von Buchstaben gleich zu unterbinden.

Die Muhkuh 7. Sep 2003 08:10

Re: Edit-Feld auf Inhalt überprüfen
 
Du willst woh ein Eurorechner machen??
Probiers doch so:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  DM, ER: Extended;
begin
  DM := strtofloat (Edit1.text);

  ER := DM * 1.95583; //Der Punkt ist sehr wichtig keine Komma!!!
  ER:=round(ER*100)/100; //Diese Round funktion iist nicht besoners gut
                         //Denn da ist auch 1DM 0€!
  Edit1.text := floattostr(ER);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  EUR, ER: Extended;
begin
  EUR := strtofloat (Edit2.text);

  ER := EUR / 1.95583; //Hier auch kein Komma!
  ER:=round(ER*100)/100; //Hier wird gerundet!
  Edit2.text := Floattostr (ER);
end;

end.
Spider

Tom 7. Sep 2003 08:19

Re: Edit-Feld auf Inhalt überprüfen
 
Zitat:

Zitat von Chaozu
Delphi-Quellcode:
    // Umrechnung in Euro
    Euro:=0.51129*Mark;

Gemäß EZB und den entsprechenden Gesetzen in Europa und des Bundes gibt es nur eine Möglichkeit der Umrechnung:
Code:
Euro = Mark / 1,95583
Die Berechnung mit dem inversen Multiplizieren ist ausdrücklich unzulässig. Wobei Du noch nicht einmal korrekt invertierst.

Chaozu 8. Sep 2003 01:21

Re: Edit-Feld auf Inhalt überprüfen
 
Sharky, wenn ich das StrToFloat weglasse, dann gehts gar nicht mehr und ich kanns nicht complimieren.
Oder meintest du was anderes

Spider, warum sollte ich denn ein neues Code verwenden, wenn meins doch schon ganz gut klappt? Mal davon abgesehn, geht deins gar nicht. ;) Hast bestimmt 2 showmessage Befehle vergessen!

Tom, is das nich im Prinzip das gleiche wie bei mir?

Luckie 8. Sep 2003 01:42

Re: Edit-Feld auf Inhalt überprüfen
 
Zitat:

Zitat von Chaozu
Sharky, wenn ich das StrToFloat weglasse, dann gehts gar nicht mehr und ich kanns nicht complimieren.
Oder meintest du was anderes

Wo hat Sharky gesagt, dass du das StrToFloat weglassen sollst?
Zitat:

Spider, warum sollte ich denn ein neues Code verwenden, wenn meins doch schon ganz gut klappt? Mal davon abgesehn, geht deins gar nicht. ;) Hast bestimmt 2 showmessage Befehle vergessen!
Hättest du seien Code mal etwas genauer angekuckt, hättest du gesehen, dass er das Ergebnis wieder in einem Edit ausgibt.
Zitat:

Tom, is das nich im Prinzip das gleiche wie bei mir?
Das Prinzip schon, nur zulässig ist nur Tom's Version.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Seite 2 von 3     12 3      

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