Avatar billede martin_andersen Nybegynder
15. april 2004 - 10:48 Der er 6 kommentarer og
1 løsning

DecimalSeparator - hvornår/hvordan opdateres den?

Jeg bruger "FormatFloat" til at skrive et tal til en tekstfil.

Decimal symbol(under regional settings) er sat til "."
Jeg kører mit program og tallet bliver korrekt skrevet i filen med "." som sep.

Herefter ændre jeg Decimal symbol(under regional settings) til ",". Nå jeg kører mit program bliver tallet stadig skrevet med "." som Sep.

Når jeg læser variablen "DecimalSeparator" er den stadig "."???

Hvordan opdatere jeg den?

På forhånd tak.
Avatar billede moller2567 Nybegynder
15. april 2004 - 11:07 #1
Brug :

DecimalSeparator := ',';

før du laver din FormatFloat, og husk at sætte den tilbage igen bagefter med

DecimalSeparator := ',';
Avatar billede martin_andersen Nybegynder
15. april 2004 - 11:14 #2
Ja det ved jeg man kan ... men jeg vil ikke selv sætte DecimalSeparator.

Jeg forsår ikke hvorfor DecimalSeparator ikke indeholder det der står i "Regional Settings -> Decimal symbol". Der ser ud til at DecimalSeparator ikke bliver opdateret når man skifter "Regional Settings -> Decimal symbol".

Jeg vil bare være sikker på at programmet eksempelvis skriver tallet ud med "," i tyskland og med "." i england.
Avatar billede hrc Mester
15. april 2004 - 17:27 #3
Når du ændrer DecimalSeparator-værdien i et Delphi-program, så ændrer du ikke Windows' indstilling. Bare for at slå den sag fast.

Med et program har jeg prøvet at ændre værdien via Control Panel / Regional Settings og det virker altså fint. Komma den ene gang jeg kører mit program, Punktum det andet - det virker og du må gøre et eller andet forkert.



var
  OldDecimalSeparator : char;
begin
  OldDecimalSeparator := DecimalSeparator;
  DecimalSeparator := '.';
  try
    // F.eks. en eller anden SQL-sætning der bruger decimalseparator
  finally
    DecimalSeparator := OldDecimalSeparator;
  end;
end;
Avatar billede hrc Mester
15. april 2004 - 17:29 #4
Ramte lige "Send"-knappen. Med eksemplet ville jeg illustrere hvordan jeg bruger decimalseparatoren.
Avatar billede martin_andersen Nybegynder
16. april 2004 - 10:17 #5
Jeg kan ikke udelukke at jeg for sat decimalseparator et andet sted i programmet...der er mange linier kode:) Jeg plejer dog altid at gemme DecimalSeparator, præcis som i dit eksempel.

Jeg prøver lige at lave et lille testprogram for at teste din påstand.

Er der ikke mulighed for at hente defaultværdien tilbage af DecimalSeparator?
Avatar billede martin_andersen Nybegynder
16. april 2004 - 10:34 #6
Ja.... du har ret.
Jeg må ha en fejl i programmet et sted.
Avatar billede nop Nybegynder
19. april 2004 - 11:43 #7
Bare lige en detalje, hvis dit program kører og der ændres i local-settings, så skal programmet jo igen forespørge windows om (i dit ex.) decimal-seperator. Jeg ved ikke om delphi gør abonnerer(eller hvad det hedder) på opdatering af local-settings, men hvis det gør så må du ihvertilfælde sørge for at din kopi af decimal-seperator osse opdateres(du kan jo bare altid kun bruge delphis). Og har du så osse et problem med skærmen, for hvad hvis der vises en række (eller kolonne ha!) af tal, de skal jo reformateres hvis der ændres i local-settings.
Bare prøv at ændre dato-fmt medens outlook kører; den reagerer strax...

Løsning: Dit program læser KUN local-settings i opstart disse beholdes (derfor egen KOPI i dit program) indtil programmet gen-startes.

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