![]() |
Textfeld auf Zahl prüfen
Hallo zusammen,
habe das Problem ein Eingabefeld (sollte nur für Zahlen sein, sonst keine Berechnung möglich) auf Zahlen zu prüfen. Der Anfang des Programms sieht so aus:
Delphi-Quellcode:
Nun in dem Feld wo die Zahl rein kommen soll:
type
{ TForm1MSP } TForm1MSP = class(TForm) ... Edit1Masse: TEdit; ....(die anderen Felder) procedure Edit1MasseChange(Sender: TObject); ....(die anderen Felder)
Delphi-Quellcode:
hiernach habe ich alles mögliche versucht, aber habe immer Fehlermeldungen bekommen.
procedure TForm1MSP.Edit1MasseChange(Sender: TObject);
.... Mein Ziel ist es, einfach dieses Feld auf Zahlen (mit Komma oder ohne ist egal) zu prüfen und falls dort eine Buchstabe eingegeben wird soll showmessage('Bitte geben Sie eine Zahl ein') rauskommen Konnte das Problem nicht lösen und bitte um Hilfe Vielen Dank :thumb: |
AW: Textfeld auf Zahl prüfen
Z.B. mit TryStrToFloat()
|
Delphi-Quellcode:
VAR
zahl:string
Delphi-Quellcode:
habe das hier mal versucht aber das programm starten dann nicht
try
zahl :=TryStrToFloat(Edit1Masse.text); except showmessage('Geben Sie bitte eine Zahl ein'); end; |
AW: Textfeld auf Zahl prüfen
Delphi-Quellcode:
if not TryStrToFloat(Edit1Masse.text, zahl) then ...
|
AW: Textfeld auf Zahl prüfen
Zitat:
PS: Die Fehlermeldung kann man kopieren (Strg+C) oder notfals halbwegs abschreiben. Und jetzt schau mal bitte in die OH ( ![]() Ach ja, TryStrTo... lösen keine Exceptions aus. |
AW: Textfeld auf Zahl prüfen
Hallo,
oder mit KeyPress-Event nur Zahlen zulassen.
Delphi-Quellcode:
if not (Key in [#48..#57] then Key:=0;
Bis bald Chemiker |
AW: Textfeld auf Zahl prüfen
Dann kriegst Du aber auch kein Komma rein. Nimmst Du das mit in die Menge auf, kann es mehrfach oder an unsinniger Stelle vorkommen.
|
AW: Textfeld auf Zahl prüfen
Delphi-Quellcode:
procedure TForm1MSP.RadioGroup1Click(Sender: TObject);
begin end; Var zahl:string; procedure TForm1MSP.Edit1MasseChange(Sender: TObject); begin if not TryStrToFloat(Edit1Masse.text, zahl) then showmessage('FEHLER') end; nun siehts so aus und so kommt die Fehlermeldung: unit1.pas(127,47) Error: Call by var for arg no. 2 has to match exactly: Got "AnsiString" expected "Extended" |
AW: Textfeld auf Zahl prüfen
Hallo DeddyH,
Zitat:
|
AW: Textfeld auf Zahl prüfen
Na dann schau dich mal was
Delphi-Quellcode:
für einen Typen hat und welcher Typ wohl erwartet wird?
zahl
|
AW: Textfeld auf Zahl prüfen
TryStrToFloat, da ist String wohl der falsche Datentyp für die Variable Zahl.
|
AW: Textfeld auf Zahl prüfen
Zitat:
Und was haben alle gegen existierende Funktionen? (TMaskEdit, TEdit.NumbersOnly usw.) |
AW: Textfeld auf Zahl prüfen
Delphi-Quellcode:
procedure TForm1MSP.RadioGroup1Click(Sender: TObject);
begin end; Var zahl:string; procedure TForm1MSP.Edit1MasseChange(Sender: TObject); begin if not TryStrToFloat(Edit1Masse.text,zahl) then showmessage('FEHLER'); end; begin if RadioButtonFlussdichte.Checked = true then Label7.Caption := Edit1Spannung.Text else Label5.Caption := Edit1Flussdichte.Text; end; was muss ich den für zahl eine Variable geben? |
AW: Textfeld auf Zahl prüfen
Die Variable "Zahl" würde ich
1. in die Procedure mit reinnehmen, damit ist sie nur lokal innerhalb der procedure gültig und 2. als Extended oder Double deklarieren, denn eine Zahl ist eine Zahl und kein String Das Ganze würde dann so aussehen:
Delphi-Quellcode:
procedure TForm1MSP.Edit1MasseChange(Sender: TObject);
Var zahl:Extended; begin if not TryStrToFloat(Edit1Masse.text, zahl) then showmessage('FEHLER') end; |
AW: Textfeld auf Zahl prüfen
StrToFloat = String To Float als einen String in eine Fließkommazahl, da würde isch eine Fließkommavariable ( Single, Double, Extended) anbieten
|
AW: Textfeld auf Zahl prüfen
![]() Zitat:
|
AW: Textfeld auf Zahl prüfen
Delphi-Quellcode:
procedure TForm1MSP.Edit1MasseChange(Sender: TObject);
Var zahl:Extended; begin if not TryStrToFloat(Edit1Masse.text,zahl) then showmessage('FEHLER'); end; begin if RadioButtonFlussdichte.Checked = true then Label7.Caption := Edit1Spannung.Text else Label5.Caption := Edit1Flussdichte.Text; end; In diesem Zustand bleibt er bei RadioButtenFlussdichte.Checked hängen |
AW: Textfeld auf Zahl prüfen
Weil deine Begins und Ends komplett durcheinander gekommen sind.
Ein letztes mal *Code vorkau*
Delphi-Quellcode:
procedure TForm1MSP.RadioGroup1Click(Sender: TObject);
begin if RadioButtonFlussdichte.Checked = true then Label7.Caption := Edit1Spannung.Text else Label5.Caption := Edit1Flussdichte.Text; end; procedure TForm1MSP.Edit1MasseChange(Sender: TObject); Var zahl:Extended; begin if not TryStrToFloat(Edit1Masse.text, zahl) then showmessage('FEHLER') end; |
AW: Textfeld auf Zahl prüfen
Außerdem
Delphi-Quellcode:
if RadioButtonFlussdichte.Checked then
|
AW: Textfeld auf Zahl prüfen
Delphi-Quellcode:
Nicht mit true vergleichen, das kann ins Auge gehen.
if RadioButtonFlussdichte.Checked {= true} then
[edit] *Gnarf* zu spät :( [/edit] |
AW: Textfeld auf Zahl prüfen
Man man jetzt sehe ich den Fehler erst.
Vielen Dank das erste Problem mit den Buchstaben ist schon mal gelöst! Nun ensteht noch ein Problem, denn wenn ich zu viel in den Textfeldern rumspiele 112341 und dann a reinschreibe zeigt er diese Message, jedoch später nimmt er mal alles falsch an auch Zahlen, später mal alles richtig an. Komisch :S |
AW: Textfeld auf Zahl prüfen
Willst du nicht mal den ganzen Quelltext posten (Copy & Paste). Da ist bestimmt noch anderes durcheinander.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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