AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Eingabefeld überprüfen, ob es "leer" ist

Eingabefeld überprüfen, ob es "leer" ist

Ein Thema von -lx- · begonnen am 28. Okt 2005 · letzter Beitrag vom 7. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2   
-lx-
(Gast)

n/a Beiträge
 
#1

Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 00:27
Hallo.

Also ich habe ein problem mit meinem kleinen Programm.

Und zwar bekomme ich es nicht hin, ein Eingabefeld zu überprüfen, ob es leer ist oder nicht.

Als Fehler gibt er immer aus, dass '' kein Integer Wert ist. Das ist klar abe rich weis nicht wie ich den vergleichbaren Wert in nen String umwandel.
Hier mal der Code:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    EGramm: TEdit;
    LEinheit: TLabel;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Gewicht: Integer ;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

Gewicht:= StrToInt(EGramm.Text) ;

If Gewicht = ''  Then
 begin
    ShowMessage('Bitte geben sie einen Wert ein') ;
    exit ;
 end

Else If Gewicht < 50 Then
 begin
    ShowMessage('Das Porto beträgt 1,70 DM') ;
 end

Else If (Gewicht >= 50 ) And (Gewicht <= 100) Then
 begin
    ShowMessage('Das Porto beträgt 2,40 DM') ;
 end

Else If Gewicht > 100 Then
 begin
    ShowMessage('Das Porto beträgt 3,20 DM') ;
 end;


end;

end.


Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 00:34
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    EGramm: TEdit;
    LEinheit: TLabel;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Gewicht: Integer ;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
Gewicht:= StrToInt(EGramm.Text);
except
ShowMessage('Im Edit steht keine Zahl!'); // das hier hinzufügen
exit;
end;

If Gewicht = ''  Then
begin
    ShowMessage('Bitte geben sie einen Wert ein') ;
    exit ;
end

Else If Gewicht < 50 Then
begin
    ShowMessage('Das Porto beträgt 1,70 DM') ;
end

Else If (Gewicht >= 50 ) And (Gewicht <= 100) Then
begin
    ShowMessage('Das Porto beträgt 2,40 DM') ;
end

Else If Gewicht > 100 Then
begin
    ShowMessage('Das Porto beträgt 3,20 DM') ;
end;
end;

end.
du musst mit einem Try-Except block gucken obs im Edit eine Zahl steht.. wenn keine Zahl drin steht dann wird Gewicht:= StrToInt(EGramm.Text); nicht funktionieren.. und bei diesem try-except block wird dann halt die Nachricht angezeigt das keine Zahl im Edit steht.
Michael
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 00:35
Hallo -lx-

du musst den string Prüfen und nicht den integer Wert.

Zitat:
Gewicht:= StrToInt(EGramm.Text) ;

Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 04:43
Moin -lx-.

Deine Variable Gewicht solltest du als private oder public Variable deiner Form deklarieren, der Rest der interface section deiner Form sollte tabu für dich sein. Deinen Code habe ich ein wenig umgestellt. Du lernst dabei die Routine Delphi-Referenz durchsuchenTryToStrInt kennen und auch, dass ein IF-ELSE-IF am Ende keine Bedingung mehr braucht.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    EGramm: TEdit;
    LEinheit: TLabel;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    Gewicht:integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not TryStrToInt(EGramm.Text, Gewicht)
  or (Gewicht < 0) then
    ShowMessage('Bitte geben sie einen gültigen Wert ein')
  else if Gewicht < 50 then
    ShowMessage('Das Porto beträgt 1,70 DM')
  else if Gewicht <= 100 then
    ShowMessage('Das Porto beträgt 2,40 DM')
  else
    ShowMessage('Das Porto beträgt 3,20 DM') ;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#5

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 07:39
Wie wäre es StrToIntDef. Dann werden alle Texteingaben auch gleich abgefangen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Gewicht := StrToIntDef(EGramm.Text, 0); // Ein Brief mit KEINEM Gewicht wird es wohl nicht geben

If Gewicht = 0 Then
begin
    ShowMessage('Bitte geben sie einen Wert ein') ;
    exit ;
end

[...]

end;
  Mit Zitat antworten Zitat
-lx-
(Gast)

n/a Beiträge
 
#6

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 13:54
Hallo und erstmal recht Herzlichen Dank für die vielen Antworten und Lösungsvorschläge!

@ Neutral General

Interesante Technik dieses "Try/Except" bzw. "Try/Finally" . Jetzt weis ich wie man elegante Fehlermeldungen erzeugt Jedoch sollte man diese Tehcnik NICHT in For-Schleifen verwenden. Danke


@ Tau

Wenn ich das mache, dann ist " EGramm.Text " komischer Weise auch in nen String umgewandelt und zwar dauerhaft. Also für die weitere Überprüfung gibt es Fehler... das hatte ich aj auch schon ausprobiert Aber auch dir Danke =)


@ marabu

Moin Moin

Also leider kann ich in Google keinerlei Ergebnisse zu dem Befehl " TryToStrInt " finden O_O
Wäre entt wenn du mir den mal erklären könntest. Auch dir ne Dickes Danke


@ DevilsCamp

" StrToIntDef " ist auch was Nettes. Ist sogar sehr multifunkionell. Also kann man quasi NUR Zahlen engeben. Zeichen, Buchstaben etc. werden durch eine elegante Fehlermeldung bemängelt und nicht durch nen programmabsturz oder ehnliches angezeigt.ich versteh nur nicht was " (EGramm.Text, 0) " das heißen soll. Dass man mehrer Werte durh en Komma trenen kann, kenn ich von JS aber auch d ahabe ich es noch nicht ganz verstandne wieso man de smacht und was es bezweckt.




Mit freundlichen Grüßen
-lx-
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#7

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 14:10
Zitat von -lx-:
@ DevilsCamp

" StrToIntDef " ist auch was Nettes. Ist sogar sehr multifunkionell. Also kann man quasi NUR Zahlen engeben. Zeichen, Buchstaben etc. werden durch eine elegante Fehlermeldung bemängelt und nicht durch nen programmabsturz oder ehnliches angezeigt.ich versteh nur nicht was " (EGramm.Text, 0) " das heißen soll. Dass man mehrer Werte durh en Komma trenen kann, kenn ich von JS aber auch d ahabe ich es noch nicht ganz verstandne wieso man de smacht und was es bezweckt.
StrToInDef ist nichts anderes als StrToInt nur kann man hier einen Default-Wert angeben, wenn der zurück gegeben wird, wenn der String keine Zahl ist. So kann man einen beliebigen Text umwandeln lassen, bekommt bei Texten, die rein aus Ziffern bestehen, die entsprechende Zahl, ansonsten, ganz nett OHNE Fehlermeldung, den Defaultwert.


Delphi-Quellcode:
s := '12345';
i := StrToIntDef(s, 0); // i = 12345, weil s eine Zahl sein kann

s := 'HalloDuDa';
i := StrToIntDef(s, 0); // i = 0, weil s KEINE Zahl sein kann
Sinnvoll, wenn man mit Default-Werten weiterarbeiten kann bzw. es aus dem Defaultwert hervorgeht, dass der String keine Zahl war (in deinem Beispiel: Defaultwert=0, da es keine Briefe mit Gewicht 0g gibt )

Wenn allerdings kein Defaultwert möglich ist, dann sollte man mit Try..Except arbeiten...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 15:01
Zitat von -lx-:
Also leider kann ich in Google keinerlei Ergebnisse zu dem Befehl " TryToStrInt " finden.
Wäre nett wenn du mir den mal erklären könntest.
Von Hesse zu Hesse: In meinem D7 schreibe ich den Befehl im Editor, setze den Cursor drauf und drücke F1. Die Funktion stammt übrigens aus der Unit SysUtils.

marabu
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 15:04
Hallo,
Zitat von marabu:
Zitat von -lx-:
Also leider kann ich in Google keinerlei Ergebnisse zu dem Befehl " TryToStrInt " finden.
Wäre nett wenn du mir den mal erklären könntest.
Von Hesse zu Hesse: In meinem D7 schreibe ich den Befehl im Editor, setze den Cursor drauf und drücke F1. Die Funktion stammt übrigens aus der Unit SysUtils.

marabu
Wenn ich den Befehl benutze, kommt nur eine Fehlermeldung des Compilers, der Befehl lautet nämlich Delphi-Referenz durchsuchenTryStrToInt.

Gruß
xaromz
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Eingabefeld überprüfen, ob es "leer" ist

  Alt 28. Okt 2005, 16:12
Schaut euch bitte meinen Code an, der ist getestet. Wenn euch der Schreibfehler im begleitenden Text irritiert hat, dann tut mir das sehr leid.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:05 Uhr.
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