2010-05-26 12 views
3

Cette question est reliée à This question, en utilisant certaines des fonctionnalités de Windows Explorer automatiquement dans une application Delphi.Existe-t-il un moyen (sans codage explicite) d'afficher un nombre en utilisant les préfixes métriques?

Existe-t-il un moyen de formater un entier en utilisant les préfixes metrix automatiquement dans Delphi? D'une certaine manière d'obtenir automatiquement un résultat comme Windows Explorer donne? Je veux dire convertir 1024 à 1,0 K automatiquement.

disons quelque chose comme

FormatMetric('FileSize = %d', [26112], 1,'B') 
// where the third parameter is the number of decimal digits 
// and the fourth is the string that is appended 

retournera

25.5 KB 

Bien sûr, je peux le code, mais est là dans quelque chose comme RTL cela?

+0

KB ou Kio? 1024 n'est pas un préfixe métrique –

+0

Par préfixes metrix, je veux dire K, M, G, T, P (pour kilo, méga, giga, tera, peta). Je fais référence à la façon dont le système de fichiers affiche ces valeurs. – LaBracca

Répondre

6

Vous avez besoin de l'appel d'API Windows StrFormatByteSizeA.

Voir la msdn: http://msdn.microsoft.com/en-us/library/bb759974%28VS.85%29.aspx

+0

Merci, cette API fait exactement ce dont j'ai besoin. Je peux imaginer qu'il n'y a pas de wrapper Delphi pour cela, mais ce n'est pas nécessaire. – LaBracca

+0

Il existe une déclaration Delphi pour 'StrFormatByteSizeA' et' StrFormatByteSizeW' dans 'ShLwAPI.pas; il suffit de l'ajouter à votre clause uses comme d'habitude. –

+0

Oui, je l'ai découvert tout à l'heure. Quoi qu'il en soit, même avec StrFormatByteSizeW, je ne peux pas obtenir des valeurs> 2GB. Pourquoi ça? – LaBracca