Autor Beitrag
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 20.02.05 16:33 
Wie kann man herausfinden ob in einem EDITFELD ein String oder eine Zahl steht ohne das eine Fehlermeldung erscheint (Um Fehler bei StrroInt vorzubeugen)


Moderiert von user profile iconUGrohne: Topic aus VCL (Visual Component Library) verschoben am So 20.02.2005 um 16:59
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: So 20.02.05 16:46 
versuchs mal mit der Procedure VAL
könnte man so anwenden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function isfloat(const eingabe:string;var zahl:extended):boolean;//Prüfen auf
var code:integer;                                                //float
begin
val(eingabe,zahl,code);
if (code=0) then
   result:=true
else
    result:=false;
end;

wenn du das auf interger prüfen willst dann erstezt du var zahl:extended durch var zahl:integer!
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 20.02.05 16:52 
Wie wendet man das an?
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: So 20.02.05 16:56 
zb so:
ausblenden Delphi-Quelltext
1:
if (isfloat(edit1.text,a)) and (isfloat(edit2.text,b)) then					

du rufst die Funkiton isfloat auf, gibst den String von edit1 darein, wenn edit1 ne float bzw integer zahl entählt, wird die zahl umgeändert und in d variable a gespeichert....oder in eine variable, die du willst.
das selbe passiert mit isfloat(edit2.text,b)
und nur wenn beide isfloat ein true zurückgeben, solltest du mit der Aufgabe weiterrechnen, ansonsten gibts du ne Fehlermeldung aus...
zb mal die Anweundng aif die lineare Gleichung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.Button1Click(Sender: TObject);            //Start Button

var a,b,x:extended;

begin
label6.caption:='';
if (isfloat(edit1.text,a)) and (isfloat(edit2.text,b)) then//Wenn edit1 und edit2 ne floatzahl enthalten, dann wird das hier ausgeführt
   begin
   if (a=0) then                                   //Ablauf siehe Algorithmus
      begin
      if (b=0) then
         begin
         edit3.text:='alle x aus R';
         end
      else
         begin
         edit3.text:='keine Lösung';
         end;
      end
   else
      begin
      x:=-b/a;
      edit3.text:=floattostr(x);
      end;
   end                                               //Ende des Algorithmus
else//Edit1 oder edit2 oder beide enthalten keine Floatzahl
    showmessage('Bitte korrekte Zahlen eingeben');

end;
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 20.02.05 17:05 
Wofür sind Variablen a und B???
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: So 20.02.05 17:09 
na, du hast doch vor, mit variablen oder sowas weiterzuerechnen
früher hast du zb geschreiben
ausblenden Delphi-Quelltext
1:
a:=StrToInt(edit1.text);					

dann gibts aber ne fehlermeldung, wenn du in edit1 zb a stehetn hast
jetzt machste mit isReal(edit1.text,a); bzw isInteger(edit1.text,a);, wobei du dann ja hinteher wieder das in der Funciton umändern musst, wie oben schon beschrieben.
wnn dann in edit1 ne integer bzw float zahl steht, gibt isReal True zurück, und erledigt dann a:=StrToInt(edit1.text) bzw a:=StrToFloat(edit1.text); für dich!
und damit du dann weißt, ob da ne Zahl drinsteht, musst du mit den Rückgabe werten von IsInteger bzw IsReal arbeiten...wie in dem obigen beispiel gezeigt.
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 20.02.05 17:21 
Besten Dank :lol:
Wizard of OS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win95, Win98, Win2000, WinNT, Win XP
D5
BeitragVerfasst: Mo 21.02.05 14:41 
Im Prinzip könnte man es auch so machen ...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
bIstZahl: boolean;

try
   iZahl := StrToInt(Edit1.Text);
   bIstZahl := true;
except
   bIstZahl := false;
end;

Nachteil:

"Anhalten bei Exceptions" muss in Delphi ausgeschaltet sein,
ansonsten kommen immer nervende Hinweise.

Vorteil dieser Methode:

Man kann so recht einfach auch komplexere Dinge (wie z.B. Gültigkeit eines Datums) überprüfen.

Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
try
   aDate := StrToDate(Edit1.Text);
   ShowMessage('Gültiges Datum in Edit1');
except
   ShowMessage('Ungültiges Datum in Edit1');
end;


Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 21.02.05 14:48 
@Wizard of OS: hab dein Doppelposting gelöscht. Außerdem bitte beim nächsten Mal Delphitags verwenden.

Danke dir :)
AXMD
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.02.05 16:38 
KK gucken was besser is