Avatar billede xax Nybegynder
04. september 2003 - 11:29 Der er 20 kommentarer og
2 løsninger

Decimaltal og noget med Access

Jeg har problemmer med at gange med decimaltal.

procedure TKalender.Button5Click(Sender: TObject);
var
Tal1: Integer;
Tal2: Integer;
Tal3: Integer;
Tal4: Integer;
begin
Tal1 := StrToInt(DBedit1.Text);
Tal2 := StrToInt(DBedit2.Text);
Tal3 := StrToInt(DBedit1.Text) * (95);
Tal4 := StrToInt(DBedit2.Text) * (16); //her skal jeg kunne gange med 16,57. Hvordan gør jeg det????

DBedit4.Text := IntToStr(Tal1 + Tal2);
DBedit6.Text := IntToStr(Tal3);
DBedit7.Text := IntToStr(Tal4);
DBedit8.Text := IntToStr(Tal3 + Tal4);
end;

Og i mine DBedit, kan jeg ikke skrive komma tal, når programmet kører, så får jeg denne fejl melding:
Project X.com raised exception class EConvertError with "11,2' is not a valid integer value'.

I min DBedit8.text kommer der et tal som jeg gemmer i min database. Det tal skal kunne lægges sammen med andre tal der kommer til at stå i det felt. Eks. 200 + 250 + 900.
Avatar billede x-masman Nybegynder
04. september 2003 - 11:41 #1
Så skal du bruge strToFloat istedet
Avatar billede snowball Novice
04. september 2003 - 11:41 #2
Dine variabler skal være af typen Real (eller Extended hvis det er meget store tal). Integer kan kun indeholde heltals værdier og ikke decimal værdier som du prøver at proppe ind i den.

Snowball
Avatar billede x-masman Nybegynder
04. september 2003 - 11:42 #3
og andet problem: Der skal du bruge floatToStr
Avatar billede snowball Novice
04. september 2003 - 11:47 #4
x-masman: Det hjælper ikke meget at bruge StrToFloat/FloatToStr hvis man bruge Integer variabler ;)

Mht. hvor mange decimaler du vil have med ved en konvertering, så kan du evt. prøve at kigge lidt på FormatFloat funktionen som du kan se eksempler på i http://www.eksperten.dk/spm/343119

Snowball
Avatar billede xax Nybegynder
04. september 2003 - 11:50 #5
Jeg har sat Extended ind under
Var
Tal4: Extended
men får stadig fejl: [Error] KalenderUnit.pas(91): ')' expected but ',' found
som er den = Tal4 := StrToInt(DBedit2.Text) * (16,57);
har også prøvet : Tal4 := StrToFloat(DBedit2.Text) * (16,57);
Avatar billede x-masman Nybegynder
04. september 2003 - 11:52 #6
I sådan nogle tilfælde er Java altså bare meget lettere!!!!
Avatar billede x-masman Nybegynder
04. september 2003 - 11:53 #7
skal man iøvrigt ikke bruge . istedet for , ?
Avatar billede snowball Novice
04. september 2003 - 11:55 #8
xax: Det er fordi Delphi bruger . og ikke , til deciaml tal - hvilket nok også er en ting du skal tage højde for når du gemmer dine værdier i Access, da den nemlig bruger , til decimaltal.

Tal4 := StrToFloat(DBedit2.Text) * (16.57);

Snowball
Avatar billede xax Nybegynder
04. september 2003 - 11:55 #9
jo. kanon, nu er det bare en anden fejl
Avatar billede snowball Novice
04. september 2003 - 11:57 #10
Hvilken fejl er det ?

Snowball
Avatar billede xax Nybegynder
04. september 2003 - 11:57 #11
skal jeg skifte alle StrToInt ud med StrToFloat
og omvendt
Avatar billede snowball Novice
04. september 2003 - 12:00 #12
Ikke nødvendigvis. Hvis det kun er Tal4 der kommer til at indeholde decimal tal, så er det ikke nødvendigt at skifte alle de andre. Dog så kan det måske godt være en fordel at gøre det hvis du senere skal ligge Tal4 sammen med nogle af de andre variabler så de også er forberedt på at kunne indeholde decimal tal.

Snowball
Avatar billede xax Nybegynder
04. september 2003 - 12:01 #13
Tal1: Extended;
Tal2: Extended;
Tal3: Extended;
Tal4: Extended;
begin
Tal1 := StrToInt(DBedit1.Text);
Tal2 := StrToInt(DBedit2.Text);
Tal3 := StrToInt(DBedit1.Text) * (95);
Tal4 := strToFloat(DBedit2.Text) * (16.57);

DBedit4.Text := FloatToStr(Tal1 + Tal2);
DBedit6.Text := FloatToStr(Tal3);
DBedit7.Text := FloatToStr(Tal4);
DBedit8.Text := FloatToStr(Tal3 + Tal4);

Det er sådan det ser ud nu, og det virker,
men ikke endnu med at skrive komma tal, men det har jeg heller ikke kikket på endnu
Avatar billede xax Nybegynder
04. september 2003 - 12:05 #14
Det var bare StrToFloat der skulle til. nu virker det som det skal.
Avatar billede xax Nybegynder
04. september 2003 - 12:07 #15
Ved i hvordan jeg løser mit access problem
Avatar billede x-masman Nybegynder
04. september 2003 - 12:13 #16
Er det meningen at du vil lægge sammen i selve databasen, for så får du nok et problem da det er text. Ellers må du lige hive det ind i excell og konveretere det til tal og sål gemme summen i databasen
Avatar billede x-masman Nybegynder
04. september 2003 - 12:16 #17
det ind i delphi. mener jeg
Avatar billede xax Nybegynder
04. september 2003 - 12:18 #18
Nej, ikke hvis man kan gøre det på en anden måde.
Det jeg er ved at regne ud, er min dagsløn. Hvis man så laver et nyt felt databasen, som bare blive opdateret hver dag, med et nyt beløb, som er blevet regnet sammen med programmet. Giver det nogen mening, og kan det lade sige gøre
Avatar billede x-masman Nybegynder
04. september 2003 - 12:24 #19
jamen så laver du vel bare en procedure, som henter de relevante felter for databasen ind. Nu kender jeg ikke dine fields i databasen. Men hvis du har en der hedder dato, kan du søge efter denne i databasen. Når du er noget frem til den record du skal bruge, kan du bruge FieldByName til foreksempel at hente antal timer. Når det er gjort kan du gange tallet sammen med timeløn og så gemme det i et field, der hedder dagsløn
Avatar billede xax Nybegynder
04. september 2003 - 12:27 #20
Smart. Så siger jeg mange tak. I vil vel bare have 50 points hver?
Avatar billede snowball Novice
04. september 2003 - 12:31 #21
xax: Du deler dem bare som du har lyst til ;)

Snowball
Avatar billede xax Nybegynder
04. september 2003 - 12:34 #22
OK. Så siger jeg mange tak for hjælpen.
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