Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ist String eine gültige Zahl?" (https://www.delphipraxis.net/13319-ist-string-eine-gueltige-zahl.html)

Pseudemys Nelsoni 16. Dez 2003 10:03


Ist String eine gültige Zahl?"
 
... prüft ob ein wort nur zahlen enthält? also sowas wie

if isInt(text) then //

hab in der hilfe nichts passendes gefunden

sakura 16. Dez 2003 10:09

Re: gibt es in delphi eine funktion die...
 
Wie wäre es mit Val, die gibt Dir einen Fehlercode zurück, wenn es keine Zahl ist.

...:cat:...

P.S.: Bitte wähle trotzdem einen besseren Titel ;-)

toms 16. Dez 2003 10:09

Re: gibt es in delphi eine funktion die...
 
Hi,

Das kannst du leicht mit der Val() Funktion überprüfen.
Diese veruscht einen String in einen Integer Wert umzuwandeln.
Schlägt dieser Versuch fehl, dann ist Code <> 0.


Delphi-Quellcode:
var
  I, Code: Integer;
begin
  Val('123a', I, Code);
  if Code = 0 then
    ShowMessage('String enthält nur Zahlen')
  else
    ShowMessage('String enthält Buchstaben');
end;

Pseudemys Nelsoni 16. Dez 2003 10:12

Re: gibt es in delphi eine funktion die...
 
danke leute ^^

ich werde thema mal umbenennen

arg, diese doofe begrenzung...ich komme nur bis "gibt es eine funktion die prüft ob ein string in ein int ver"...wandelt werden kann

was kürzeres fällt mir nich ein, hm

Luckie 16. Dez 2003 10:18

Re: gibt es in delphi eine funktion die...
 
:roll: Lass doch mal alles was keine Information beinhaltet im Titel weg. :roll:

Mein Vorschlag: "Ist String eine gültige Zahl?"

Pseudemys Nelsoni 16. Dez 2003 10:23

Re: Ist String eine gültige Zahl?"
 
danke lueckie :wink:


btw: ich denke ich schreib mir ne eigene function in dem iich jedes einzelne char prüfe.
bei val brauch ich ja noch ne extra integer variable...

Luckie 16. Dez 2003 10:26

Re: Ist String eine gültige Zahl?"
 
Nun ja. Wenn deine CPU sonst nichts zu tun hat, nur zu. Ich weiß nicht, wie es Borland macht, aber besser bekommst du es wohl kaum hin.

Pseudemys Nelsoni 16. Dez 2003 10:38

Re: Ist String eine gültige Zahl?"
 
soweit ich es verstanden habe, mach "Val" es so, das es den ersten parameter(der übergebene string) nach NUR zahlen prüft und wenn dem so ist wird code = 0 sein, ich verstehe nur nicht wieso 3 parameter gibt. Wozu muss ich noch nen integer an die function übergeben?

meine function hätte von den parametern eher so:

Delphi-Quellcode:
function IsInt(s: string): boolean;
var
  i: integer;
begin
  if s <> '' then
  begin
    result := true;
    for i := 0 to length(s) do
    begin
      if not (StrToInt(s[i]) in [0..9]) then
      result := false;
    end;
  end;
end;
ausgesehen. ich will ja nachher nur ca so prüfen:

Delphi-Quellcode:
if isint(string) then //

Tom 16. Dez 2003 10:44

Re: Ist String eine gültige Zahl?"
 
Zitat:

Zitat von Pseudemys Nelsoni
ich verstehe nur nicht wieso 3 parameter gibt. Wozu muss ich noch nen integer an die function übergeben?

Schon die Delphi-Hilfe zu Val gelesen?

Zitat:

Delphi-Quellcode:
  if s <> '' then
  begin
    result := true;

Die Funktion bekommt in bestimmten Fällen kein Result zugewiesen ...

Zitat:

Delphi-Quellcode:
    for i := 0 to length(s) do

Zeichen eines Strings werden ab 1 gezählt.

Zitat:

Delphi-Quellcode:
      if not (StrToInt(s[i]) in [0..9]) then

Was denkst Du was passiert wenn s[i] nicht in 0 bis 9 ist?

Pseudemys Nelsoni 16. Dez 2003 10:47

Re: Ist String eine gültige Zahl?"
 
Zitat:

Schon die Delphi-Hilfe zu Val gelesen?
ja.


Zitat:

Zeichen eines Strings werden ab 1 gezählt.
vergessen.


Zitat:

Was denkst Du was passiert wenn s[i] nicht in 0 bis 9 ist?
dann wird: result := false;

sakura 16. Dez 2003 10:48

Re: Ist String eine gültige Zahl?"
 
Wenn Du Val nicht willst (Achtung: bei Vall ist XC auch eine Zahl :!: ) dann:
Delphi-Quellcode:
function IsInt(s: string): boolean;
var
  I: Integer;
begin
  for i := 0 to length(s) do
    if not (StrToInt(s[i]) in [0..9]) then
    begin
      result := False;
      Exit;
    end;
  Result := True;
end;
...:cat:...

Pseudemys Nelsoni 16. Dez 2003 10:52

Re: Ist String eine gültige Zahl?"
 
thX sakrua ^^

Tom 16. Dez 2003 10:52

Re: Ist String eine gültige Zahl?"
 
Zitat:

Zitat von Pseudemys Nelsoni
ja.

Aha. Da steht doch drin wofür der 3. Parameter von Val gut ist.


Zitat:

dann wird: result := false;
Vielleicht. Andererseits
Code:
---------------------------
Project1
---------------------------
Fehler bei Bereichsprüfung.
---------------------------
OK  
---------------------------

Pseudemys Nelsoni 16. Dez 2003 11:06

Re: Ist String eine gültige Zahl?"
 
wieso vielleicht?

Delphi-Quellcode:
      if not (StrToInt(s[i]) in [0..9]) then
      result := false;
wenn s[i] nicht in 0-9 ist dann result := false;. oder nicht :cyclops:


sakura: liegt dieser fehler an der "isint"-funktion?

http://www.angelfire.com/bug/delphi/fehler2.jpg

meine procedure sieht so aus:

Delphi-Quellcode:
  if word(2, s) = 'intervall' then
  begin
    if isint(word(3, s)) then      // die zeile wird beim fehler markiert
    begin
      Form1.Timer1.Interval := StrToInt(word(3, s) + '000');
      Form1.IdIRC1.Say(chan, '14¤03¤09¤ Automatische Antwort wurde auf ' + word(3, s) + ' 09Sekunden gestellt');
    end
    else
    Form1.IdIRC1.Say(chan, '14¤05¤04¤ ' + word(3, s) + ' 04ist keine gültige Zahl');
  end;

die function "word" gibt das wort des index's zurück, also bei 3 ist das wort 3 und in diesem fall war das dritte wort "5" also 5 sekunden

Smokey 16. Dez 2003 11:09

Re: Ist String eine gültige Zahl?"
 
Problem bei StrToInt ist halt, dass er ne Exception schmeisst, was bei VAL nicht der Fall ist, weil dir der zweite Integerwert eben angibt ob ein Fehler aufgetreten ist.

Daher würde ich entweder die Exception abfangen, doch einfach VAL benutzen, oder aber den Code ohne StrToInt machen indem du einfach auf Strings prüfst :

Code:
function IsInt(s: string): boolean;
var
  I: Integer;
begin
  for i := 0 to length(s) do
    [color=red]if not (s[i] in ['0'..'9']) then[/color]
    begin
      result := False;
      Exit;
    end;
  Result := True;
end;
Allerdings bin ich trotz allem ein Verfechter von VAL oder Exception abfangen :lol:

Pseudemys Nelsoni 16. Dez 2003 11:10

Re: Ist String eine gültige Zahl?"
 
hat sich erledigt ^^ die laufvariable musste bei 1 beginnen.

danke an alle

Tom 16. Dez 2003 11:11

Re: Ist String eine gültige Zahl?"
 
Zitat:

Zitat von Pseudemys Nelsoni
wieso vielleicht?

Weil vorher der Flieger kommt ...
Delphi-Quellcode:
      if not (StrToInt(s[i]) in [0..9]) then ShowMessage( 'dkdkd' );
Oder siehst Du die Message noch?

Pseudemys Nelsoni 16. Dez 2003 11:14

Re: Ist String eine gültige Zahl?"
 
ach, jetzt weiss ich was du meinst, wegen dem strtoint, jo stimmt. nicht dran gedacht :zwinker: danke


@smoke, habe die zeile übernommen, danke :zwinker:

sakura 16. Dez 2003 11:18

Re: Ist String eine gültige Zahl?"
 
Sorry für die Copy&Waste Error :oops:

...:cat:...


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