Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Texteingaben sowie leerstellen ausschliessen (https://www.delphipraxis.net/157042-texteingaben-sowie-leerstellen-ausschliessen.html)

Joecker 26. Dez 2010 15:52

Texteingaben sowie leerstellen ausschliessen
 
hi ich bin komplett neu in delphi und ich hoffe man verzeiht es mir sollte ich die frage in einen falschen thread geshrieben haben
also ich habeine art rechner gemacht der mit kommastellen arbeitet dieser funktioniertauch soweit
jetzt will ich dass er aber Texteingaben und wenn das edit feld leer ist oder wenn eine null darin steht mit einer fehler meldung beantwortet

bis jetzt hab ich das etwa so geschrieben

if (n=0) or ... then messagedlg('Eingabe fehlt!',mtInformation,[mbOK],0)

so bei ... müsste dass mit texteingabe und nullfeld stehen
ach ja kann ich eigentlich auch mehrere variablen gleichzeitig den test durchlaufen lassen etwa so?
if (n,z,l,k=0) or ... then messagedlg('Eingabe fehlt!',mtInformation,[mbOK],0)

erwartete sehnsüchtig eure hilfe

Bummi 26. Dez 2010 16:25

AW: Texteingaben sowie leerstellen ausschliessen
 
es gibt verschieden Möglichkeiten, ich würde die erste bevorzugen.
Delphi-Quellcode:
var
 f:Double;
begin
  If not TryStrToFloat(Edit1.text,f) or (f=0) then Raise Exception.Create('Fehler');
end;
oder auch
Delphi-Quellcode:
if (length(Trim(Edit1.Text)) = 0) or (Trim(Edit1.Text)='0') then ....

RSF 26. Dez 2010 16:42

AW: Texteingaben sowie leerstellen ausschliessen
 
oder die Eingabe im Ereignis KeyPress abfangen:

Delphi-Quellcode:
procedure TTaschenrechner.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
IF key =#13 Then Key:=#0
else
  if not (Key in [#8,#44..#46,#48..#57]) then Key:= #0
end;

Joecker 26. Dez 2010 18:00

AW: Texteingaben sowie leerstellen ausschliessen
 
ok ich habs bisher erstmal soweit geschafft dass er es mir anzeigt wenn ich keine zahl eingeb durch folgenden befehl

procedure TForm1.Edit1Change(Sender: TObject);
begin
try (strtofloat(Edit1.Text))
except
On EConvertError do messagedlg('Dies ist keine Zahl!',mtInformation,[mbOK],0);
end;

end;

leider crasht mir der debugger trotzdem wenn ich keine zahl eingebe auch wenn er mit danach noch die msg zeigt. ich weiss das man das mit dem debugger umstellen kann will ich aber nicht machen
deswegen die frage ob ich diesen crash und das rauswerfen aus dem programm verhindern kann?

Satty67 26. Dez 2010 18:30

AW: Texteingaben sowie leerstellen ausschliessen
 
Das passiert nur innerhalb der Delphi-IDE beim Debuggen. Wenn Du das Programm alleine startest, funktioniert es wie geplant.

Um das zu umgehen (ohne sinnvolle Debugger-Funktionalität zu verbergen) müsstest Du TryStrToFloat verwenden, wie es Bummi vorgeschlagen hat. (Leider verheimlichst Du Deine Delphi Version, obwohl es dafür einen schönen Profileintrag gibt. TryStrToFloat gibt es so ungefähr ab Delphi 7)


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