AGB  ·  Datenschutz  ·  Impressum  







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

Funktion (Größe formatieren) umkehren

Ein Thema von atc · begonnen am 26. Feb 2013 · letzter Beitrag vom 26. Feb 2013
 
atc

Registriert seit: 3. Dez 2010
17 Beiträge
 
#1

Funktion (Größe formatieren) umkehren

  Alt 26. Feb 2013, 14:37
Delphi-Version: XE2
hallo,

ich versuche gerade eine umkehrfunktion zu dieser funktion zu schreiben:
Delphi-Quellcode:
function FormatSize(ASize: Int64): string;
const
  UNITS: Array[0..8] of string = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB',
                                  'ZB', 'YB');
var
  iIndex: Integer;
begin
  if ASize <= 0 then
    Result := '0,00 B'
  else
  begin
    iIndex := Trunc(ln(ASize) / ln(2) / 10);
    Result := Format('%f %s', [ASize / (1 shl (iIndex * 10)), UNITS[iIndex]]);
  end;
end;
FormatSize(5662353442) ergibt z.B. 5,27 GB

jetzt brauche ich eine funktion FormatSizeR, die beim Aufruf

FormatSizeR('5,27 GB') exakt den wert 5662353442 zurückliefert.

mein kläglicher ansatz sieht bisher so aus:
Delphi-Quellcode:
function FormatSizeR(S: string): Int64;
var
  I: Integer;
  E: Extended;
begin
  I := Pos(' ', S);
  Assert(I > 0);
  E := StrToFloat(Copy(S, 1, Pred(I)));
  S := Copy(S, Succ(I));
  if S = 'KBthen
    E := E * 1024
  else if S = 'MBthen
    E := E * 1024 * 1024
  else if S = 'GBthen
    E := E * 1024 * 1024 * 1024
  else if S = 'TBthen
    E := E * 1024 * 1024 * 1024 * 1024;
  Result := Trunc(E);
end;
allerdings ist das ziemlich umständlich und der wert stimmt auch nicht. kann man das mit ein wenig mathe nicht auch so elegant machen wie die andere funktion?
  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 14:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz