18. december 2001 - 08:46Der er
7 kommentarer og 1 løsning
Floating point tal
Jeg har følgende problem:
Et program scanner en log fil og hiver nogle tal ud. Deri blandt nogle tal med deciamler.
Tallet har formatet 1.234 med et punktum som decimal punkt. I øjeblikket laver jeg en hardcoedet konvertering af punktummet til et komma hvorefter jeg bruger strtofloat for at lave strengen om til et floating point tal.
Mit problem er at hvis programmet anvendes på en pc hvor nummerformatet i regional settings er sat til at decimal punktet skal være et punktum så fejler programmet fordi 1,234 ikke er et validt floating point tal.
Hvilken funtion skal jeg bruge til at konvertere en tekst streng i formatet \"1.234\" til et validt floating point tal uanset hvordan regional settings er sat?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Nej det er ikke helt det jeg vil. For det er lige præcis det jeg allerede gør som ikke supporterer forskellige settings i regional settings.
Eks. hvis programmet kører på en dansk opsat pc så skal tallet konverteres til 1,234
hvis programmet derimod kører på en amerikansk opsat pc som bruger punktum sum decimal punkt så skal tallet konverters til 1.234 ellers fungerer efterfølgende beregninger ikke korrekt.
Du kan teste hvad de kører inden du gør et eller andet
procedure TForm1.Button1Click(Sender: TObject);
begin if (DecimalSeparator = \'.\') and (ThousandSeparator = \',\') then showmessage(\'US\'); if (DecimalSeparator = \',\') and (ThousandSeparator = \'.\') then showmessage(\'DK\');
end; --------------------------- Eller du kan sætte dem selv temp. og senere sætte dem tilbage
Lad os sige du har en procedure der hedder scanlogUS og scanlogDK
procedure TForm1.Button1Click(Sender: TObject);
begin if (DecimalSeparator = \'.\') and (ThousandSeparator = \',\') then scanlogUS; if (DecimalSeparator = \',\') and (ThousandSeparator = \'.\') then scanlogDK;
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.