|
| StrToFloat Fra : Michael Vilhelmsen |
Dato : 26-09-03 09:56 |
|
Hej
Findes der et alternativ til StrToFloat ?
Problemet er, at jeg bruger den nogle gange, men når jeg har en streng med
værdien 4.000,00 kan den ikke laves om, da der ikke må være punktum i
(tusindtalspunktum).
Jeg ville så høre, om der evt. er en anden man kan bruge ?
Michael
| |
Kurt Bilde (26-09-2003)
| Kommentar Fra : Kurt Bilde |
Dato : 26-09-03 12:08 |
|
Hej Michael !
Michael Vilhelmsen wrote:
> Hej
>
> Findes der et alternativ til StrToFloat ?
StrToFloatDef
>
> værdien 4.000,00 kan den ikke laves om, da der ikke må være punktum i
> (tusindtalspunktum).
Kig på TFormatSettings, som kan anvendes som parameter på StrToFloatDef.
Alternativt kan du anvende POS til at finde alle ',' og delete dem
s:= '4.000,00'
While pos(s,',') <> 0 do delete(s,pos(s,','),1);
eller
While pos(s,',') <> 0 do delete(s,pos(s,','),length(s)+1);
hvis du vil ha' fjernet resten (',00')
Check lige parameterne på delete og pos.....
-Kurt
| |
Kurt Bilde (26-09-2003)
| Kommentar Fra : Kurt Bilde |
Dato : 26-09-03 12:10 |
|
Hej Michael
Kurt Bilde wrote:
>> (tusindtalspunktum).
Øhhh koden går på komma.... med tusindtalspunktum ser den sådan ud
s:= '4.000,00'
While pos(s,'.') <> 0 do delete(s,pos(s,'.'),1);
-Kurt
| |
Thor (26-09-2003)
| Kommentar Fra : Thor |
Dato : 26-09-03 14:44 |
|
Hej Kurt
Nej det hedder
function Pos(Substr: string; S: string): Integer;
dvs f.eks (heller ikke testet):
function Mystrtofloat(s : string) : real;
var p : integer;
begin
repeat
p := pos('.', s);
if p > 0 then delete(s, p,1);
until p =0;
result := strtofloat(s);
end;
Hilsen Thomas Riedel
"Kurt Bilde" <kub@sam.sdu.dk> wrote in message
news:bl16ge$r4t$2@news.net.uni-c.dk...
> Hej Michael
>
> Kurt Bilde wrote:
>
> >> (tusindtalspunktum).
> Øhhh koden går på komma.... med tusindtalspunktum ser den sådan ud
> s:= '4.000,00'
> While pos(s,'.') <> 0 do delete(s,pos(s,'.'),1);
>
> -Kurt
>
| |
Ove Kjeldgaard (26-09-2003)
| Kommentar Fra : Ove Kjeldgaard |
Dato : 26-09-03 19:43 |
|
"Thor" <thr@image.danmark> wrote:
>function Mystrtofloat(s : string) : real;
>var p : integer;
>begin
> repeat
> p := pos('.', s);
> if p > 0 then delete(s, p,1);
> until p =0;
> result := strtofloat(s);
>end;
>
>Hilsen Thomas Riedel
Den er vist god nok, men der bør nok bruges Windows opsætningen, som kan hentes
i variablerne:
ThousandSeparator: is the character used to separate thousands in numbers with
more than three digits to the left of the decimal separator.
The initial value is fetched from LOCALE_STHOUSAND.
DecimalSeparator: is the character used to separate the integer part from the
fractional part of a number.
The initial value is fetched from LOCALE_SDECIMAL.
Det er at ændre fra:
p := pos( '.', s );
og til:
p := pos( ThousandSeparator, s );
--
Med venlig hilsen, Ove Kjeldgaard, nospam AT privat DOT dk
Natur og Friluftsliv: < http://hiker.dk>
| |
Claus Christiansen (26-09-2003)
| Kommentar Fra : Claus Christiansen |
Dato : 26-09-03 21:35 |
|
Ove Kjeldgaard <ReadMyEmail@The.Signature> wrote in
news:vh19nvchi7sakonh0ng4v75g21voha0dh6@4ax.com:
> "Thor" <thr@image.danmark> wrote:
>
>>function Mystrtofloat(s : string) : real;
>>var p : integer;
>>begin
>> repeat
>> p := pos('.', s);
>> if p > 0 then delete(s, p,1);
>> until p =0;
>> result := strtofloat(s); end;
>
> Den er vist god nok, men der bør nok bruges Windows opsætningen, som
> kan hentes i variablerne:
>
<klip en hel masse>
> Det er at ændre fra:
> p := pos( '.', s );
>
> og til:
> p := pos( ThousandSeparator, s );
>
>
hmm, det kan vi vist hellere korte lidt ned til:
function ExtStrToFloat(const Str: string): double;
begin
result := StrToFloat(StringReplace(Str, ThousandSeparator, '',
[rfReplaceAll]));
end;
med mindre man ved at input er i engelsk format, så skal
ThousandSeparator blot hardcodes (helst som en konstant).
/Claus
--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: < http://unipeople.dk/~cch>; pythia: < http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso
| |
Michael Vilhelmsen (29-09-2003)
| Kommentar Fra : Michael Vilhelmsen |
Dato : 29-09-03 08:00 |
|
Jeg takker for alle jeres besvarelser.
Som det ser ud nu, skal jeg lave min egen funktion til det (hvilket jeg
allerede har gjort).
Jeg takker
Michael
"Michael Vilhelmsen" <smom22@hotmail.com> skrev i en meddelelse
news:3f73ff24$0$133$edfadb0f@dread11.news.tele.dk...
> Hej
>
> Findes der et alternativ til StrToFloat ?
>
> Problemet er, at jeg bruger den nogle gange, men når jeg har en streng med
> værdien 4.000,00 kan den ikke laves om, da der ikke må være punktum i
> (tusindtalspunktum).
>
> Jeg ville så høre, om der evt. er en anden man kan bruge ?
>
> Michael
>
>
| |
|
|