/ 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
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
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste