![]() |
Eingabefeld überprüfen, ob es "leer" ist
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 |
Re: Eingabefeld überprüfen, ob es "leer" ist
Delphi-Quellcode:
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.
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. |
Re: Eingabefeld überprüfen, ob es "leer" ist
Hallo -lx-
du musst den string Prüfen und nicht den integer Wert. Zitat:
Tau :hi: |
Re: Eingabefeld überprüfen, ob es "leer" ist
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-Quellcode:
Grüße vom marabu
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; |
Re: Eingabefeld überprüfen, ob es "leer" ist
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; |
Re: Eingabefeld überprüfen, ob es "leer" ist
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 :D @ 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- |
Re: Eingabefeld überprüfen, ob es "leer" ist
Zitat:
Delphi-Quellcode:
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 ;) )
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 Wenn allerdings kein Defaultwert möglich ist, dann sollte man mit Try..Except arbeiten... |
Re: Eingabefeld überprüfen, ob es "leer" ist
Zitat:
marabu |
Re: Eingabefeld überprüfen, ob es "leer" ist
Hallo,
Zitat:
![]() Gruß xaromz |
Re: Eingabefeld überprüfen, ob es "leer" ist
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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 by Thomas Breitkreuz