Avatar billede blackbyte Nybegynder
26. april 2002 - 15:03 Der er 11 kommentarer og
1 løsning

KUN tal..

Hvordan tester jeg om en streng KUN indeholder tal?
Avatar billede morten_s Nybegynder
26. april 2002 - 15:04 #1
procedure Val(S; var V; var Code: Integer);

Description

Val converts the string value S to its numeric representation, as if it were read from a text file with Read.

S is a string-type expression; it must be a sequence of characters that form a signed real number.

V is an integer-type or real-type variable. If V is an integer-type variable, S must form a whole number.

Code is a variable of type Integer.

If the string is invalid, the index of the offending character is stored in Code; otherwise, Code is set to zero. For a null-terminated string, the error position returned in Code is one larger than the actual zero-based index of the character in error.

Val performs range checking differently depending upon the setting of the $R compiler directive and the type of the parameter V.
Avatar billede blackbyte Nybegynder
26. april 2002 - 15:05 #2
Siger mig ikke meget... Kan du lave en hurtig oversættelse :)
Avatar billede blackbyte Nybegynder
26. april 2002 - 15:09 #3
Hvis Code <> 0, så er der et tegn i strengen?
Avatar billede morten_s Nybegynder
26. april 2002 - 15:09 #4
procedure TForm1.Button1Click(Sender: TObject);
var
  i, cnt : Integer;
begin
  val(Edit1.Text, i, cnt);
  if cnt <> 0 then
    ShowMessage('Der er andet end tal i strengen')
  else
    ShowMessage('Strengen indeholder kun tal');
end;
Avatar billede hermandsen Juniormester
26. april 2002 - 15:10 #5
procedure Val(S; var V; var Code: Integer);

Forstået sådan:

S er den streng der læses fra.
V er den tal-værdi du skriver i.
Hvis der er et "ikke-tal" så bliver dets placering sat i Code.

Med?
Avatar billede blackbyte Nybegynder
26. april 2002 - 15:11 #6
Takker.. :)
Avatar billede hermandsen Juniormester
26. april 2002 - 15:14 #7
if Code <> 0
tester om Code er forskellig fra 0.

<> = forskellig i Delphi!

if Code = 0 Weeeeee!!!! Vi har en streng der KUN indeholder tal! :)
Avatar billede kayb Nybegynder
26. april 2002 - 15:16 #8
procedure TForm1.Button1Click(Sender: TObject);
Var
  tmpStr : String;
  I,NR : Byte;
begin
Nr:=0;
tmpStr:='10987';
For I:=1 to Length(tmpStr) do
begin
  if not (tmpStr[I] in ['0'..'9']) then
  begin
  Inc(Nr);
  end;
end;
if Nr=0 then
begin
  Showmessage('Kun tal')
end
else Showmessage('Ikke kun tal')
end;

Håber du kan bruge det...
Avatar billede hermandsen Juniormester
26. april 2002 - 15:20 #9
>>kayb
Du skal lige huske på at din procedure er lidt langsom!
Val er desværre hurtigere, og så kan din kun virke hvis vi har en streng der er kortere end 255 tegn! Lidt usandsynligt med et tal, men alligevel! ;)
Avatar billede kayb Nybegynder
26. april 2002 - 15:26 #10
>>hermandsen
Jeg ved det men kom først i tanke om den efter at have givet svaret..
Du ved ikke nok søvn.. :-)
Avatar billede hermandsen Juniormester
26. april 2002 - 15:27 #11
>>blackbyte
Skal du konvertere din streng til et tal, eller skal du bare teste om der er noget andet end tal i din streng, for så er der en lettere måde at gøre det på!
Avatar billede hermandsen Juniormester
26. april 2002 - 15:30 #12
Jamen der kan faktisk være noget i din metode som morten_s har overset...
Hvis nu det er en streng på 10432 der kun indeholder tal, så er det altså RET meget at lægge i en Integer!!! Så er det nemlig (næsten) din metode han skal bruge!!!
Så burde man nok bare overveje at bruge Copy i stedet for []...
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