Lazarus 2.2.2 (2022.05.19.)
Letöltés

  • Oldal:
  • 1

TÉMA:

FloatFormat 2016 ápr. 20 13:23 #1960

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
ok, kösz!

FloatFormat 2016 ápr. 20 13:20 #1959

  • JohnnyK
  • JohnnyK profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 78
  • Köszönetek: 16
A SysUtils unitban a default ThousandSeparator érték egy sima vessző a Windows alatt. Valószínűleg a Lazarus nem tud dűlőre jutni a GetLocaleInfoA Win32-es függvény során az operációs rendszertől beérkező úgynevezett non-breaking space karakterrel (#160), és a default vessző jut érvényre.

FloatFormat 2016 ápr. 20 10:02 #1958

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Erre gondoltál:
DefaultFormatSettings.ThousandSeparator := ' ';
ok, köszönöm!

Bár érdekes, hogy Win7 alatt a Vezérlőpult-ban az alapértelmezett ezres elválasztó a szóköz.
Mégis a DefaultFormatSettings.ThousandSeparator értékét lekérdezve egy vesszőt ad vissza: ,

FloatFormat 2016 ápr. 20 09:17 #1957

  • JohnnyK
  • JohnnyK profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 78
  • Köszönetek: 16
Szia!
FormatFloat függyvényben felhasználható paraméterek: www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html
Ezek alapján az ezres elválasztó a vessző. Az ezres elválasztó helyén (de a tizedesvessző helyén is) alapból megjelenő karakter valószínűleg függ az operációs rendszer területi beállításaitól, de kézzel is átállítható a FormatFloat meghívása előtt így: ThousandSeparator := ' ' ; és akkor pl. egy space lesz, ha netán nem az volna alapból.
Jelen példában így használnám:
FormatFloat (',0.00', floatvalue);

FloatFormat 2016 ápr. 20 08:53 #1956

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Üdv!
Kódban a FloatFormat() fv-el szeretnék egy floatot formázni ezres csoportosítással és 2 tizedes pontossággal:
FormatFloat('###,###,###0.00', floatvalue)
FormatFloat('### ### ###0.00', floatvalue)

Az ezreseket nem csoportosítja. Mit rontok el?

  • Oldal:
  • 1