Delphi-PRAXiS

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 00:47


Edit-Feld auf Inhalt überprüfen
 
Hi!

Ähm, also ich bin zwar schon lange hier angemeldet, aber irgendwie neu hier..:) Sorry, wenns der falsche Unterforum ist und hier nicht reinpasst... :/

Also ich möchte gerne, dass meine edit.text überprüft wird, ob was geschrieben wurde, bevor ich auf OK klicke. Wenn da nichts geschrieben worden ist, dann soll eine Fehlermeldung kommen, die ich selbst gerne definieren bzw. gestalten möchte.
Im moment ist das so, dass, wenn ich keine Zahl eingebe und dann auf OK klicke, dass da dann eine fehlermeldung kommt wo drinne steht: '' ist kein gültiger Gleitkommawert

Dieses würd ich gern selbst erstellen und würd mich freuen, wenn jemand helfen könnte.

Marco Haffner 6. Sep 2003 00:52

Re: Edit-Feld auf Inhalt überprüfen
 
Indem Du überprüfst, ob Edit1.Text = '' ist.

Chaozu 6. Sep 2003 01:12

Re: Edit-Feld auf Inhalt überprüfen
 
Also mit Edit1.Text = '' überprüfe ich ja, ob was in '' enthalten ist. Somit wäre ja schon das erste prob gelöst.

Wie mach ich denn jetzt, dass, wenn in '' nichts enthalten is, eine Fehlermeldung sprich showMessage kommt?

flomei 6. Sep 2003 01:26

Re: Edit-Feld auf Inhalt überprüfen
 
Delphi-Quellcode:
if
  Edit1.Text = ''
then
  MessageDlg('Sie müssen zunächst etwas eingeben!', mtWarning, [mbOK], 0);
else
//is ja alles prima also brauch da nix stehen
end;
MfG Florian :hi:

Darty 6. Sep 2003 01:28

Re: Edit-Feld auf Inhalt überprüfen
 
Vielleicht so was ?
Delphi-Quellcode:
If Edit1.Text = '' then ShowMessage ('Sorry Du hast nichts reingeschrieben');
Mit meiner Möglichkeit wäre dann nur ein OK Taste ...

Chaozu 6. Sep 2003 01:48

Re: Edit-Feld auf Inhalt überprüfen
 
Also die Logik, worauf ihr hinaus wollt, versteh ich, aber was ich nicht verstehe is, wo das hingeschrieben werden soll. :/

WooDWorkeR 6. Sep 2003 01:55

Re: Edit-Feld auf Inhalt überprüfen
 
du willst bestimt prüfen ob wenn du auf einen button klickst ob das feld mit etwas gefüllt ist

dan schribst du es da hin wo du hingelangst wenn du doppelt auf den button klickst wenn mich meine delphi kenntnisse da nciht trügen.

Chaozu 6. Sep 2003 02:12

Re: Edit-Feld auf Inhalt überprüfen
 
Ja, ich hab doppelklick auf OK gemacht und dann da eingegeben, aber dann sagt der mir entweder false wird nich benötigt, oder es kommt keine fehlermeldung, sondern nur die alte übliche.

Luckie 6. Sep 2003 03:08

Re: Edit-Feld auf Inhalt überprüfen
 
Und was ist bei dir das "übliche"?
Alle hier angebotten Lösungen funktionieren und machen genau das, was du willst.

Darty 6. Sep 2003 09:57

Re: Edit-Feld auf Inhalt überprüfen
 
Nehmen wir mal an Du hast ein Edit1 und ein Button1. Dann muss dieser Code in der "OnClick" (Doppelklick auf Button) reingesetzt werden. Dass würde dann so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if edit1.text <> '' then ShowMessage ('Du hast was reingeschrieben')
  else ShowMessage ('Du hast NIX reingeschrieben');
end;
Falls Du aber mehr Codes als nur eine Ausgabe brauchst, dann würde es so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if edit1.text <> '' then
    begin //Hier kommt Codes rein wenn was reingeschrieben wurde.
      ShowMessage ('Du hast was reingeschrieben');
    end
  else
    begin //Hier kommt Codes rein wenn NIX reingeschrieben wurde.
      ShowMessage ('Du hast NIX reingeschrieben');
    end
end;
Im zweiten Fall kannst du zwischen den begin und end weitere Codes einfügen.

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.

Matze 8. Sep 2003 12:17

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

Zitat von Spider
ER:=round(ER*100)/100; //Diese Round funktion iist nicht besoners gut
//Denn da ist auch 1DM 0€!

:gruebel: Qieso ist da eine Mark = 0 €, kappier ich nicht. Du rechnest da doch von € nach DM um, wenn du 0 eingibst, dann kommt auch 0 raus. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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