/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
FormatFloat
Fra : dh8000


Dato : 31-01-06 20:35

Hej.

Jeg får en fejl om, at (en værdi) ikke er en gyldig integer, når jeg åbner
min form i runtime.

Jeg har anvendt

var
tal: integer;
begin
tal:= 123456;
label1.Caption:= FormatFloat('#,0', tal);
end;

Jeg har bare ikke overblik til at se, hvor fejlen ligger her.

Jeg har været min hjælpemanual igennem for at se, hvad jeg gør galt. Er der
andre, der kan se det?



 
 
dh8000 (31-01-2006)
Kommentar
Fra : dh8000


Dato : 31-01-06 21:00

"dh8000" <dennishartvigsen@ofir.dk> skrev i en meddelelse
news:43dfbbc2$0$12400$ba624c82@nntp02.dk.telia.net...
> Hej.
>
> Jeg får en fejl om, at (en værdi) ikke er en gyldig integer, når jeg åbner
> min form i runtime.
>
> Jeg har anvendt
>
> var
> tal: integer;
> begin
> tal:= 123456;
> label1.Caption:= FormatFloat('#,0', tal);
> end;
>
> Jeg har bare ikke overblik til at se, hvor fejlen ligger her.
>
> Jeg har været min hjælpemanual igennem for at se, hvad jeg gør galt. Er
> der andre, der kan se det?

Hej.

Det bliver mere og mere mystisk.

Den samme kode og det samme tal i en anden form virker uden problemer.

Og de samme ting er erklæret oppe i uses, så det er ikke fordi, den ikke
kender funktionen.



dh8000 (31-01-2006)
Kommentar
Fra : dh8000


Dato : 31-01-06 21:17

"dh8000" <dennishartvigsen@ofir.dk> skrev i en meddelelse
news:43dfc1a7$0$9303$ba624c82@nntp02.dk.telia.net...
> "dh8000" <dennishartvigsen@ofir.dk> skrev i en meddelelse
> news:43dfbbc2$0$12400$ba624c82@nntp02.dk.telia.net...
>> Hej.
>>
>> Jeg får en fejl om, at (en værdi) ikke er en gyldig integer, når jeg
>> åbner min form i runtime.
>>
>> Jeg har anvendt
>>
>> var
>> tal: integer;
>> begin
>> tal:= 123456;
>> label1.Caption:= FormatFloat('#,0', tal);
>> end;
>>
>> Jeg har bare ikke overblik til at se, hvor fejlen ligger her.
>>
>> Jeg har været min hjælpemanual igennem for at se, hvad jeg gør galt. Er
>> der andre, der kan se det?
>
> Hej.
>
> Det bliver mere og mere mystisk.
>
> Den samme kode og det samme tal i en anden form virker uden problemer.
>
> Og de samme ting er erklæret oppe i uses, så det er ikke fordi, den ikke
> kender funktionen.

Det ser ud til, at problemet skyldes, at jeg senere i koden har en
procedure, hvor jeg bruger label1.caption.

If StrToInt(label1.caption) < 1000 then ... osv.

Og det kan den tilsyneladende ikke finde ud af, idet man tidligere skrev
label1.caption:= formatfloat('#,0',tal);

Jeg troede udelukkende, at formatfloat havde visuel betydning og ikke havde
betydning for, hvordan tallet opfattes. Med andre ord gør formatfloat vel
egentlig et tal (decimal eller heltal) til en string, som vil være besværlig
at konvertere tilbage til en integer eller real igen. Eller tager jeg helt
fejl?




Finn Bindeballe (31-01-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 31-01-06 22:16

hej...

en Label.caption er en string...

og... hvis du senere i dit prog. vil lave en string om til en int, skal
du være sikker paa., at er tale om et heltal, og ikke et kommatal.

hvis du ikek er sikker paa det, kan du bruge StrToFloat, men nu den
returnere som du maaske kan regne ud en float, saa den skal du ha
konverteret en gang til .... det kan du gøre med 'round'

alt i alt

If round(strtofloat((label1.caption))) < 1000 then ........

/finn

dh8000 (31-01-2006)
Kommentar
Fra : dh8000


Dato : 31-01-06 23:09

"Finn Bindeballe" <ohno@galnet.dk> skrev i en meddelelse
news:43dfd2b2$0$15789$14726298@news.sunsite.dk...
> hej...
>
> en Label.caption er en string...
>
> og... hvis du senere i dit prog. vil lave en string om til en int, skal du
> være sikker paa., at er tale om et heltal, og ikke et kommatal.
>
> hvis du ikek er sikker paa det, kan du bruge StrToFloat, men nu den
> returnere som du maaske kan regne ud en float, saa den skal du ha
> konverteret en gang til .... det kan du gøre med 'round'
>
> alt i alt
>
> If round(strtofloat((label1.caption))) < 1000 then ........

Den køber jeg ikke.

Der var nemlig tale om et heltal, der stod i label1.caption.

Se nedenstående kode som eksempel:

var
tal:integer;
begin
tal:= 123456
label1.caption:= formatfloat('#,0', tal);
end;

Den skriver følgende i label1.caption
"123.456"

Bemærk at jeg har skrevet , (komma) i koden, men på skærmen (hos mig)
udskrives den med . (punktum/tusindtalsseperator) pga. det er dansk
standard.

Det den (hos mig) ikke kan finde ud af, er, at jeg ikke kan bruge strtoint
når label1.caption står med tusindtalseperator (eller formatet ('#,0')





Finn Bindeballe (01-02-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 01-02-06 06:37

hej...


> Den skriver følgende i label1.caption
> "123.456"

hvornaar er '123.456' blivet et heltal...???? det kan godt være at du
læser det som et , men det er det altsaa ikke...

'123456' er et heltal...

/finn

Uffe Kousgaard (01-02-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 01-02-06 09:07

"dh8000" <dennishartvigsen@ofir.dk> wrote in message
news:43dfe00a$0$9301$ba624c82@nntp02.dk.telia.net...
>
> Der var nemlig tale om et heltal, der stod i label1.caption.

Heltal består af cifrene 0..9 og ikke andre.

> Den skriver følgende i label1.caption
> "123.456"

Altså ikke et heltal.



dh8000 (01-02-2006)
Kommentar
Fra : dh8000


Dato : 01-02-06 16:00

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43e06c17$0$84039$edfadb0f@dtext01.news.tele.dk...
> "dh8000" <dennishartvigsen@ofir.dk> wrote in message
> news:43dfe00a$0$9301$ba624c82@nntp02.dk.telia.net...
>>
>> Der var nemlig tale om et heltal, der stod i label1.caption.
>
> Heltal består af cifrene 0..9 og ikke andre.

Enig

>> Den skriver følgende i label1.caption
>> "123.456"
>
> Altså ikke et heltal.

Enig.

Men.Finn mente, jeg kunne bruge denne:

If round(strtofloat((label1.caption))) < 1000 then ........

og det kan jeg jo ikke med "123.456" som jeg skrev i mit indlæg
(formuleringen var dårlig, ja ok. Jeg mente, at den skrev et heltal med
tusindtalseperator i labelel. Og ja, det er jo så lige pludselig IKKE
længere et heltal. Men hvad er det så? Det er jo heller ikke real eller
andet decimaltal. Er det en streng? JA.)

Men tilbage til emnet.

Hvis jeg har 123.456 så kan jeg jo ikke bruge

If round(strtofloat((label1.caption))) < 1000 then ........

da jeg ikke går ud fra, at man kan overføre 123.456 (med punktum i) til et
tal

Det var det, som jeg mente.



Uffe Kousgaard (01-02-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 01-02-06 16:35

"dh8000" <dennishartvigsen@ofir.dk> wrote in message
news:43e0ccdd$0$6849$ba624c82@nntp02.dk.telia.net...
>
> Hvis jeg har 123.456 så kan jeg jo ikke bruge
>
> da jeg ikke går ud fra, at man kan overføre 123.456 (med punktum i) til et
> tal

Du skal grundlæggende gemme dit tal i en tal-variabel og ikke som en
tekst-streng.

hilsen
Uffe



Finn Bindeballe (01-02-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 01-02-06 17:07

hey...

Du skal slet ikke bruge en label.caption, som input til noget som
helst.... (det staar der ogsaa imellem linjerene i uffes svar). Det er
en 'output'-ting, og bør bruges saadan...

en anden ting er, at du maaske skal kikke paa denne her func
'getlocaleformatsettings'. lige til at starte med kan det virke lidt
uvoerskueligt, men brug en time paa det, saa skal du bare se... saa kan
du alt...*S*

/finn

dh8000 (01-02-2006)
Kommentar
Fra : dh8000


Dato : 01-02-06 20:23

"Finn Bindeballe" <ohno@galnet.dk> skrev i en meddelelse
news:43e0dbca$0$15790$14726298@news.sunsite.dk...
> hey...
>
> Du skal slet ikke bruge en label.caption, som input til noget som
> helst.... (det staar der ogsaa imellem linjerene i uffes svar). Det er en
> 'output'-ting, og bør bruges saadan...

Ja må indrømme, at jeg så kun fik læst linierne og ikke det, der stod
imellem dem

Som han skriver, så bør tal gemmes i tilhørende variabler. Gælder det også
ved meget MEGET store antal variabler.

> en anden ting er, at du maaske skal kikke paa denne her func
> 'getlocaleformatsettings'. lige til at starte med kan det virke lidt
> uvoerskueligt, men brug en time paa det, saa skal du bare se... saa kan du
> alt...*S*

Det vil jeg gøre. Det lyder til at være en fornuftig investering at bruge en
time på.



Finn Bindeballe (01-02-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 01-02-06 21:43

hej...

>
> Som han skriver, så bør tal gemmes i tilhørende variabler. Gælder det også
> ved meget MEGET store antal variabler.
>

tjaa... nu kommer det jo an paa hvad man forstaar ved 'meget MEGET store
antal variabler.', og det er jo mange maader at gøre ting paa.... og
enda (somregl) mange rigtige maader....saa det er jo ikke lige til at
svare paa.....

et godt udgangspunkt er jo tit, at 'opbygge' den 'verden' -eller problem
man vil bruge programmet til at løse/helpe med - i sit program.

det kan jo lyde lidt flagrende.... men naar man ikke kender dit
problem/behov kan det ikke blive anderledes....

men du kunne jo maaske beskrive hvad det er du vil.... saa kan det jo
være at der er et hint eller to.....*S*

/finn

Uffe Kousgaard (01-02-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 01-02-06 23:09

"dh8000" <dennishartvigsen@ofir.dk> wrote in message
news:43e10a97$0$11162$ba624c82@nntp02.dk.telia.net...
>
> Som han skriver, så bør tal gemmes i tilhørende variabler. Gælder det også
> ved meget MEGET store antal variabler.

I særdeleshed. Med mindre du havde forestillet dig én million TLabels på
skærmen?

(Dynamiske) arrays kan tit være en god idé til at gemme mange variabler, men
der er også andre muligheder afhængig af behovet.

hilsen
Uffe



dh8000 (03-02-2006)
Kommentar
Fra : dh8000


Dato : 03-02-06 22:12

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43e1318a$0$84031$edfadb0f@dtext01.news.tele.dk...
> "dh8000" <dennishartvigsen@ofir.dk> wrote in message
> news:43e10a97$0$11162$ba624c82@nntp02.dk.telia.net...
>>
>> Som han skriver, så bør tal gemmes i tilhørende variabler. Gælder det
>> også ved meget MEGET store antal variabler.
>
> I særdeleshed. Med mindre du havde forestillet dig én million TLabels på
> skærmen?

Nej kun nogle hundrede stykker.

Hvordan forholder det sig så med databaser og variabler.

Bør man også gemme dataene i variabler fremfor hente dem direkte fra
databasen hver gang, de skal bruges.



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste