Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.




Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus - Integer of Int64 formatteren met scheidingsteken

2 Berichten
1 Gebruikers
0 Vind-ik-leuks
1,045 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2663
Topic starter  

Omdat ik hier weer even mee aan het prullen was, zoals gebruikelijk mijn "oplossing" in dit forum.

Wat was de situatie?
Ik wilde de omvang van een bestand (via de FileUtils.FileSize('filename') functe) in bytes (Int64) weergeven met duizenden scheidingstekens. Dus b.v. 1234567890 als 1.234.567.890 weergeven.

De standaard functies vonden het niet leuk dat ik dit met een integer (int64) wilde doen (waarom is mij nog steeds een vraag) en de documentatie van de Format functie (hier en hier) zijn niet echt duidelijk ... (ik mag niet klagen, want verbeteren doe ik het blijkbaar ook niet)

Hier de fix:

var
  FileSizeInBytes:int64;
...
  Label1.Caption := Format('%.0N',[FileSizeInBytes+0.1-01]);
...

Om de Integer (int64) een float te maken, tel ik er 0.1 bij op, en vervolgens trek ik er 0.1 weer vanaf. Om deze nieuwe "float" zonder decimalen (.0) en met duizenden scheidingstekens weer te geven (N), gebruikt men dan vervolgens de "%.0N" formaat placeholder.

(overigens: Nederlands is een "aparte" taal soms ... "duizenden scheidingstekens", dus duizenden puntjes???)


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2663
Topic starter  

Mocht het scheidingsteken voor duizenden niet verschijnen dan moet je de if DefaultFormatSettings.DecimalSeparator opgeven.

Ik kon geen goede en betrouwbare manier vinden, dus ik deed het als volgt:

if DefaultFormatSettings.DecimalSeparator='.' then
DefaultFormatSettings.ThousandSeparator:=','
else
DefaultFormatSettings.ThousandSeparator:='.';

   
BeantwoordenCiteren

Bevalt je wat je hier ziet, en wil je graag helpen? 

Uiteraard is de beste manier van helpen, door anderen hier te helpen met hun vragen. Maar je kunt ons ook op andere manieren helpen:

- Shop bijvoorbeeld bij Amazon, het kost je niks extra, maar het kan zijn dat wij een kleine commissie ontvangen,
- stuur me een koffie via PayPal ($5, $10, $20, or zelf kiezen),
- je kunt ook een Patreon worden,
- of BitCoin (BTC), of BitCoinCash (BCH) doneren.

Deel: