Avatar billede nicidem Nybegynder
20. september 2002 - 08:29 Der er 27 kommentarer og
2 løsninger

tjekke om en variabel indholder andet end tal... (pascal)

Titlen siger det hele...
Hvordan får ser det ud i pascal?
Avatar billede hells Nybegynder
20. september 2002 - 09:28 #1
try
strtoint(variabel)
showmessage('fint tal')
except
showmessage('ikke kun tal');
end;
Avatar billede nicidem Nybegynder
20. september 2002 - 10:26 #2
Det er et dos program... Ved ikke om det gør en forskel?
jeg har en varibael kaldet vaegt...
og jeg skal tjekke om det indholder andet end tal?
og hvis det gør skal der komme en besked...
Avatar billede dkn Nybegynder
20. september 2002 - 10:51 #3
function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  Result := (E = 0);
end;
Avatar billede martinlind Nybegynder
20. september 2002 - 11:46 #4
Det GØR man på DKN's måde da det vil tage ALT for langt tid og bruge Exceptions itil noget sådan.
Avatar billede athlon-pascal Juniormester
21. september 2002 - 20:48 #5
nicidem -> DOS-program? Mener du et TurboPascal-program?
Hvis ja, prøv med

function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  IsStrANumber := (E = 0);
end;

Har ikke testet det i TurboPascal!
Avatar billede athlon-pascal Juniormester
21. september 2002 - 20:52 #6
if IsStrANumber(vaegt) then
  writeln(vaegt,' er ikke et gyldigt tal!');
Avatar billede nicidem Nybegynder
22. september 2002 - 11:00 #7
Mange tak for svarene!
Jeg bruger FreePascal, når jeg prøver at compile får jeg en fejl ved "function IsStrANumber(const S: String): Boolean;"
Er der en fil jeg skal "uses"?
og hvor skal jeg sætte "function" delen ind? lige efter begin eller før?
Avatar billede nicidem Nybegynder
22. september 2002 - 11:01 #8
Sætter lige pointene op pga. sværheden!
Avatar billede dkn Nybegynder
22. september 2002 - 11:15 #9
prøv at tilføje System.pas
Avatar billede nicidem Nybegynder
22. september 2002 - 12:41 #10
jeg er rimlig meget nybegynder, desværre...
Skal der så stå:
uses system; ?
og skal function stå lige efter "begin" eller hvor?
Avatar billede dkn Nybegynder
22. september 2002 - 12:54 #11
i toppen af din pas file står der uses...du sætter den bare ind i rækken.

ok når du starter en console app ser det sådan her ud:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, system; //der er den sat ind

function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  IsStrANumber := (E = 0);
end;

begin
//code here
end.
Avatar billede nicidem Nybegynder
22. september 2002 - 13:43 #12
det ser sådan ud nu:

program porto;

uses crt, system;

var
vaegt : integer;
land : char;

label here;

function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  Result := (E = 0);
end;

begin

here:
textbackground(white);
textcolor(black);
clrscr;

writeln('Indtast vaegt i gram -->');
readln(vaegt);

if IsStrANumber(vaegt) then
  writeln(vaegt,' er ikke et gyldigt tal!');

end.
Avatar billede nicidem Nybegynder
22. september 2002 - 13:44 #13
Men får stadig fejl?
ved: if IsStrANumber(vaegt) then
Avatar billede athlon-pascal Juniormester
22. september 2002 - 13:54 #14
Hvilken slags variabel (String, Integer, ...) er vaegt?
Avatar billede dkn Nybegynder
22. september 2002 - 13:54 #15
er vaegt en string?
Avatar billede nicidem Nybegynder
22. september 2002 - 14:03 #16
vaegt er en integer.. den skal indholde et tal, men komme med fejl hvis brugeren skriver noget andet end et tal...
Avatar billede dkn Nybegynder
22. september 2002 - 14:05 #17
det ser sådan ud nu:

program porto;

uses crt, system;

var
vaegt : string;
land : char;

label here;

function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  Result := (E = 0);
end;

begin

here:
textbackground(white);
textcolor(black);
clrscr;

writeln('Indtast vaegt i gram -->');
readln(vaegt);

if IsStrANumber(vaegt) then
  writeln(vaegt,' er ikke et gyldigt tal!');

end.
Avatar billede dkn Nybegynder
22. september 2002 - 14:06 #18
efter du har set om vaegt er et gyldigt tal kan du bruge: strtoint(vaegt)
Avatar billede athlon-pascal Juniormester
22. september 2002 - 14:06 #19
er det en readln(vaegt); (evt. en resd(vaegt);) der gir' fejl?
Avatar billede dkn Nybegynder
22. september 2002 - 14:06 #20
husk at strtoint bruger SysUtils i uses
Avatar billede nicidem Nybegynder
22. september 2002 - 14:10 #21
Jeg kan desværre ikke uses "SysUtils"
der kommer fejl...
og jeg skal bruge vaegt, som et integer...
=(
Jeg er virkelig glad for jeres hjælp!
Avatar billede dkn Nybegynder
22. september 2002 - 15:09 #22
program porto;

{$APPTYPE CONSOLE}

uses
  SysUtils, crt;

var
vaegt : integer;
response:string;
land : char;

label here;

function IsStrANumber(const S: String): Boolean;
VAR
  V,E : Integer;
begin
  Val(S,V,E);
  Result := (E = 0);
end;

begin
here:
textbackground(white);
textcolor(black);
clrscr;

writeln('Indtast vaegt i gram -->');
readln(response);

if IsStrANumber(response) then
  writeln(vaegt,' er ikke et gyldigt tal!') else
  begin
  vaegt := strtoint(response);
  //Nu har du vægt som integer
  end;
end.


prøv lige det
Avatar billede nicidem Nybegynder
22. september 2002 - 15:46 #23
En af mine venner sagde min compiler hed, FreePascal...
Men der står TMT Pascal...
Den kommer med en fejl ved "SysUtils, crt;"
Avatar billede nicidem Nybegynder
22. september 2002 - 15:48 #24
Men hvis i ikke har andre forslag eller ideer, vil jeg bare sig, mange tak for hjælpen!
og jeg deler pointene, som i har fortjent det...
athlon-pascal > du må gerne lige smide et svar...
(jeg vil eventuelt lige prøve at skaffe TurboPascal senere og compile i det, der virker det nok!!)
Avatar billede dkn Nybegynder
22. september 2002 - 16:03 #25
jeg ved ikke, du har altså ikke SysUtils.pas. Tror måske den er med i delphi personal som du kan hente fra borland.
Avatar billede hreiff Nybegynder
23. september 2002 - 15:02 #26
Hvorfor bruger du ikke bar val til at få værdien ?
Så skal der heller ikke 'uses' noget

Function StrToNumber(const S: String, var Res:Integer): Boolean;
VAR
  V: Real;
  E : Integer;
begin
  Val(S,V,E);
  If E=0 then
  Begin
    Res := Round(V);
    StrToNumber := True;
  End
  Else
  Begin
    Res := 0;
    StrToNumber := False;
  End;
end;

Kaldes med:

if StrToNumber(Response,Vaegt) then
  bla bla bla
else
  writeln(vaegt,' er ikke et gyldigt tal!');
Avatar billede nicidem Nybegynder
23. september 2002 - 17:21 #27
jeg får fejl i øverste linie...
Men det er vist et dårligt program jeg bruger til compiling =)
Men tak for hjælpen!
lig lige et svar hvis det er =)
Avatar billede nicidem Nybegynder
23. september 2002 - 17:22 #28
Lukker =)
Avatar billede nicidem Nybegynder
23. september 2002 - 17:24 #29
Hvis nogen føler sig snydt, siger i til, så får i de point i fortjener!
især hvis hreiff og athlon-pascal vil have del af deres fortjeneste! så smid en kommentar...
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