Avatar billede zerohero Nybegynder
24. februar 2002 - 20:10 Der er 7 kommentarer og
2 løsninger

strtofloat

findes der en funktion der kan tjekke om en string kan konverteres til en single ved at returenere en false-værdi, hvis det ikke er muligt og en true-værdi, hvis det er?

(Det samme gælder for strtoint med string der skal konverteres tin en integer)

ZeroHero
Avatar billede Slettet bruger
24. februar 2002 - 20:30 #1
Du kan lave en selv

Function IsInt(S:String):Boolean;
var
I:Int64;
Begin
    Result:=True;
    Try
    I:=StrToInt64(S);
    Exept on EConverterror Do
    Begin
    Result:=False;
    End;
End;


Når du kører programmet via delphi vil delphi give en fejl(vis det ikke er en integer) men dit program vil ikke.

Mvh. Simon
Avatar billede stoney Nybegynder
24. februar 2002 - 21:08 #2
function IsStrANumber(const S: String): Boolean;
var
  P:PChar;
begin
  P:=PChar(S);
  result:=False;
  while P^ <> #0 do
  begin
    if not (P^ in ['0'..'9']) then exit;
    inc(P);
  end;
  result:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsStrANumber(edit1.Text) = true then
showmessage('Edit1 indeholder tal');
end;

du ændrer selvfølgelig bare
if IsStrANumber(edit1.Text) = false
for at checke for str

Denne function giver ingen fejl I Delphi's IDE

Stoney
Avatar billede Slettet bruger
24. februar 2002 - 21:13 #3
Den duer dog ikke til Hex Eller til Decimaltel.

Mvh. Simon
Avatar billede Slettet bruger
24. februar 2002 - 21:39 #4
Denne duer til Heltal (ogse i Hex) og desimaltal


Function IsNumber(S:String;Int:Boolean=True):Boolean;
var
I:Integer;
B1,B2:Boolean;
C:Char;
S1:String;
Begin
    S1:=S;
    If Int Then
    Begin
    B1:=False;
    If S1[1]='$' Then
    Begin
        B1:=True;
        Delete(S1,1,1);
    End
    Else
    If (S1[1]='-') Or (S1[1]='+') Then
        If S1[2]='$' Then
        Begin
          B1:=True;
          Delete(S1,1,2);
        End
        Else
        Delete(S1,1,1);
    For I:=1 To Length(S1) Do
    Begin
    C:=S1[I];
    Case C Of
    '1','2','3','4','5','6','7','8','9','0':Begin End;
    'a','A','b','B','c','C','d','D','e','E':Begin If Not B1 Then Exit; End
    Else
    Exit;
    End;
    End;
    Result:=True;
    End
    Else
    Begin
    If (S1[1]='+') Or (S1[1]='-') Then
    Delete(S1,1,1);
    B1:=False;
    B2:=False;
    I:=0;
    Repeat
    Inc(I);
    C:=S1[I];
    Case C Of
    '1','2','3','4','5','6','7','8','9','0':Begin End;
    ','{Seperator}:If Not B2 Then    //HUSK!!!!!!!!!!!!!!
    B2:=True
    Else
    Exit;
    'e','E':B1:=True;
    Else
    Exit;
    End;
    Until (B1=True) Or (I=Length(S1));
    If I=Length(S1) Then
    Begin
    Result:=True;
    Exit;
    End;
    Inc(I);
    If (S1[I]='-') Or (S1[I]='+') Then
    Inc(I);
    For I:=I To Length(S) Do
    Begin
    C:=S1[I];
    Case C of
    '1','2','3','4','5','6','7','8','9','0':Begin End
    Else
    Exit;
    End;
    End;
    Result:=True;
    End;
End;


Mvh. Simon
Avatar billede Slettet bruger
24. februar 2002 - 22:15 #5
Stoney så snart jeg har et eksempel bliver det aksepteret.
(bare lave en form gem og send projektet)

http://www.eksperten.dk/spm/171324

Mvh. Simon
Avatar billede zerohero Nybegynder
24. februar 2002 - 22:29 #6
Tak for jeres indslag. Jeg har desværre ikke lige tid til at afprøve dem lige nu (trætheden melder sig)... kigger på det imorgen!

ZeroHero
Avatar billede Slettet bruger
09. marts 2002 - 18:20 #7
så det et andet sted her
                        {eller en anden type tal}
Function IsNum(S:String;T:Real):Boolean;
s:String;
I:Integer;
Begin
    val(S,T,I);
    Result:=(I=0);
End

Mvh. Simon
Avatar billede Slettet bruger
21. marts 2002 - 12:46 #8
Er du blevet frisk igen.

Mvh. Simon
Avatar billede zerohero Nybegynder
21. marts 2002 - 15:41 #9
Ja :-p... 1000 tak for jeres svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester