Avatar billede stefmeister Nybegynder
14. marts 2004 - 16:53 Der er 12 kommentarer og
1 løsning

Decimal tal

Hej...

Jeg er igang med at lave en lommeregner, men jeg vil jo selvfølgelig gerne have at den kan regne med decimal tal, men hvis jeg prøver på det så kommer den med fejlen:
"Project Project1.exe raised exception class EConvertError with message "0,5' is not a valid integer value'.
Process stopped. Use Step or Run to continue.

Ved ikke hvorfor jeg ikke kan.
Avatar billede viciodk Praktikant
14. marts 2004 - 16:58 #1
Du regner med integers, altså heltal, så du får problemer med f.eks. 1 / 2 fordi ½ ikke kan gemmes som en integer. Brug double eller float i stedet for integer.
Avatar billede arne_v Ekspert
14. marts 2004 - 17:00 #2
Mere specifikt tror jeg at det er StrToFloat fremfor StrToInt du skal bruge.
Avatar billede arne_v Ekspert
14. marts 2004 - 17:00 #3
PS: Du kan godt risikere at det skal være 0.5 og ikke 0,5
Avatar billede stefmeister Nybegynder
14. marts 2004 - 17:02 #4
Project Project1.exe raised exception class EConvertError with message "6.' is not a valid floating point'.
Process stopped. Use Step or Run to continue.

dette svar får jeg hvis jeg sætter et punktum ind.
Avatar billede arne_v Ekspert
14. marts 2004 - 17:04 #5
Så prøver du med 6,
Avatar billede stefmeister Nybegynder
14. marts 2004 - 17:17 #6
hvis jeg laver det til at den skal lave et komma i stedet for, så laver den bare ingenting
Avatar billede stefmeister Nybegynder
14. marts 2004 - 17:28 #7
jeg har en variable som hedder v: real;

hvordan smider jeg så Edit1.Text ned i v?
Hvis jeg siger v := StrToInt(Edit1.Text) så bliver det jo til en integer og så kan jeg ikke bruge decimaltal.
Avatar billede arne_v Ekspert
14. marts 2004 - 17:31 #8
Jeg mener stadigvæk StrToFloat ...
Avatar billede stefmeister Nybegynder
14. marts 2004 - 17:34 #9
har gjort nu... så giver mine resultater bare 0...
f.eks. hvis jeg tager 9 / 8 giver 1,125
så tager jeg det og ganger det med fx. 8 igen, så bliver resultatet 0.
Avatar billede stefmeister Nybegynder
14. marts 2004 - 17:36 #10
ups... glemte lige at rette noget i ligmed tasten...
smid et svar... for nu virker det..!
Avatar billede arne_v Ekspert
14. marts 2004 - 17:38 #11
ok
Avatar billede janbb Juniormester
15. marts 2004 - 02:12 #12
Hvis du vil sikre dig der indtastes et punktum i stedet for et komma kan du lægge en fejlmeddellelse ind hvis det ikke bliver gjort:


function real_weight_of_age(V : real) : real;
  begin
  real_weight_of_age := (2.3*V) + 7.5;
  end;

procedure TForm1.Button2Click(Sender: TObject);
var
V:real;
code:integer;
st:string;
begin
val(edit2.text,V,code);

if code <> 0 then
messagedlg ('brug punktum som . og ikke ,:' +Inttostr(code),mtwarning ,[mbok] ,0)
else
str(real_weight_of_age(V):3:1,st);
label2.caption:=st;
end;
Avatar billede stefmeister Nybegynder
15. marts 2004 - 10:41 #13
så skal man bare gøre det modsatte med komma og punktum hvis det er ik?
for på min lommeregner skal man bruge komma og ikke punktum.
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