AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grössenangabe automatische Umwandlung

Ein Thema von GreenHorn3600 · begonnen am 7. Aug 2009 · letzter Beitrag vom 5. Apr 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#6

Re: Grössenangabe automatische Umwandlung

  Alt 7. Aug 2009, 10:20
Delphi-Quellcode:
Function SizeToString(Const Size: Int64): String;
  Begin
    If Size < 1000 Then Result := Format('%d B', [Size])
    Else If Size < 10235 Then Result := Format('%.2n KB', [Size / 1024])
    Else If Size < 102349 Then Result := Format('%.1n KB', [Size / 1024])
    Else If Size < 1023488 Then Result := Format('%.0n KB', [Size / 1024])
    Else If Size < 10480518 Then Result := Format('%.2n MB', [Size / 1048576])
    Else If Size < 104805172 Then Result := Format('%.1n MB', [Size / 1048576])
    Else If Size < 1048051712 Then Result := Format('%.0n MB', [Size / 1048576])
    Else If Size < 10732049531 Then Result := Format('%.2n GB', [Size / 1073741824])
    Else If Size < 107320495309 Then Result := Format('%.1n GB', [Size / 1073741824])
    Else If Size < 1073204953088 Then Result := Format('%.0n GB', [Size / 1073741824])
    Else If Size < 10989618719622 Then Result := Format('%.2n TB', [Size / 1099511627776])
    Else If Size < 109896187196212 Then Result := Format('%.1n TB', [Size / 1099511627776])
    Else If Size < 1098961871962112 Then Result := Format('%.0n TB', [Size / 1099511627776])
    Else If Size < 11253369568892027 Then Result := Format('%.2n PB', [Size / 1125899906842624])
    Else If Size < 112533695688920269 Then Result := Format('%.1n PB', [Size / 1125899906842624])
    Else If Size < 1125336956889202688 Then Result := Format('%.0n PB', [Size / 1125899906842624])
    Else Result := Format('%.2n EB', [Size / 1152921504606846976]);
  End;
es ginge auch über eine Schleife zu berechnen, aber das ist so eine der schnellsten Möglichkeiten

falls sich wer über die "krummen" Zahlen wundert, diese sind so gewählt, daß der Wert immer mit maximal 3 Stellen (Vor- und Nachkomma) und in der optimalsten, dazupassenden Skalierung dargestellt wird.

gerechnet mit 1024, damit es zu den Werten im Explorer paßt (ja, ich kenn das 1000er-Besteben, aber ich halte mich ans gängige Verhalten des BS)

!!! Achtung: wenn am Rundungsverhalten der FPU rumgespielt wurde, muß/sollte es für diese Funktion wieder zurückgestellt werden, oder man muß dieses auch noch mit hier einbauen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz