AGB  ·  Datenschutz  ·  Impressum  







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

Dateigröße aufteilen in kB, MB,...

Ein Thema von Helmi · begonnen am 30. Jul 2007 · letzter Beitrag vom 30. Jul 2007
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:33
Hallo,

ich steh gerade auf dem Schlauch.

Ich hab eine Dateigröße wie z. b. eine LongInt-Variable die den Wert 4722. Das ist eine Dateilänge.

Wie kann ich am Einfachsten diesen Wert aufteilen in kB, MB, ...?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:36
Die Länge der Datei wird in Byte angegeben...also musst Du teilen...je nachdem ob Du kb oder mb willst...entsprechend durch 1024 oder nochmal durch 1024.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:41
gibts dafür ne fertige Funktion?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:43
Ja ,

Delphi-Quellcode:
function ByteToMegaByte(Byte: Integer): Integer;
begin
result := Byte div 1024 div 1024;
end;
Hier musste aber erst noch kopieren
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#5

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:44
Ein Quick&Dirty hack in C#:

Code:
public string SizeString
{
    get
    {
        float size = FileSize;
        int divs = 0;

        while (size > 1024)
        {
            size /= 1024;
            divs++;
        }

        string unit;
        switch (divs)
        {
            case 0: unit = " Byte"; break;
            case 1: unit = " KB"; break;
            case 2: unit = " MB"; break;
            case 3: unit = " GB"; break;
            default: unit = ""; break;
        }

        return (string.Format("{0:F2}",size) + unit);
    }
}
Ist aber recht flott zu übersetzen
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von bigg
bigg

Registriert seit: 1. Jul 2007
155 Beiträge
 
#6

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 16:56
Und kommt dem hier schon recht nah^^:

Lösung1 von mir:
Delphi-Quellcode:
function FileSizeToString(const FileSize: Int64): String;
const Measure: Array[0..4] of String = ('Byte', 'KB', 'MB', 'GB', 'TB');
var NewSize: Currency;
var i: Integer;
begin
  Result := '';

  if FileSize > -1 then
  begin
    i := 0;
    NewSize := FileSize;

    while (NewSize >= 1024) do
    begin
      NewSize := NewSize / 1024;
      Inc(i);
    end;

    case i of
      0: Result := FloatToStr( NewSize );
      1,
      2,
      3: Result := FormatFloat('0.00', NewSize);
      4: Result := FormatFloat('0.000', NewSize);
    else Result := FloatToStr( NewSize );
    end;

    Result := Result + #32 + Measure[i];
  end;
end;

Lösung2 von himitsu:

Delphi-Quellcode:
Function SizeToString(Size: LargeInt): String;
    Var i: LargeInt;

    Begin
      i := Abs(Size);
      If i < 1000 Then Result := Format('%.0n B', [Size / 1])
      Else If i < 10235 Then Result := Format('%.2n KB', [Size / 1024])
      Else If i < 102349 Then Result := Format('%.1n KB', [Size / 1024])
      Else If i < 1023488 Then Result := Format('%.0n KB', [Size / 1024])
      Else If i < 10480518 Then Result := Format('%.2n MB', [Size / 1048576])
      Else If i < 104805172 Then Result := Format('%.1n MB', [Size / 1048576])
      Else If i < 1048051712 Then Result := Format('%.0n MB', [Size / 1048576])
      Else If i < 10732049531 Then Result := Format('%.2n GB', [Size / 1073741824])
      Else If i < 107320495309 Then Result := Format('%.1n GB', [Size / 1073741824])
      Else If i < 1073204953088 Then Result := Format('%.0n GB', [Size / 1073741824])
      Else If i < 10989618719622 Then Result := Format('%.2n TB', [Size / 1099511627776])
      Else If i < 109896187196212 Then Result := Format('%.1n TB', [Size / 1099511627776])
      Else If i < 1098961871962112 Then Result := Format('%.0n TB', [Size / 1099511627776])
      Else If i < 11253369568892027 Then Result := Format('%.2n PB', [Size / 1125899906842624])
      Else If i < 112533695688920269 Then Result := Format('%.1n PB', [Size / 1125899906842624])
      Else If i < 1125336956889202688 Then Result := Format('%.0n PB', [Size / 1125899906842624])
      Else Result := Format('%.2n EB', [Size / 1152921504606846976]);
    End;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 17:30
Danke für die Hilfe

Biggs 1. Lösung hat mit gut gefallen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: Dateigröße aufteilen in kB, MB,...

  Alt 30. Jul 2007, 19:36
Hi,

Und für noch größere Dateien:

Zitat von Lösung1 - bigg:
while (NewSize >= 1024) do
Daraus einfach das machen:
while (NewSize >= 1024) and (i < 4) do Dann kann das Else raus und es gibt keine Probleme in der Zeile:
Result := Result + #32 + Measure[i]; Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:48 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