AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Speichergrößen heutzutage korrekt interpretieren/betiteln
Thema durchsuchen
Ansicht
Themen-Optionen

Speichergrößen heutzutage korrekt interpretieren/betiteln

Ein Thema von KodeZwerg · begonnen am 4. Jul 2018 · letzter Beitrag vom 30. Jul 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 08:30
Ich gehe mal stark davon aus, dass 99% aller Delphi-schreiber die Funktion unten benutzen, um Datengrößen visuell dazustellen.

Zitat:
Khabarakh hat auf Basis seines Codes eine Alternative gepostet, die ohne die Unit Math auskommen sollte:
zusammenfalten · markieren Delphi-Quellcode:
Delphi-Quellcode:
function FileSizeToStr(const ASize: Int64 {für Delphiversionen < 2005 durch Real/Double/Extended ersetzen}; const AUseShortNames: Boolean = true): string;
const
  ShortUnits: Array[0..8] of string = ('Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
  LongUnits: Array[0..8] of string = ('B', 'Kilob', 'Megab', 'Gigab', 'Terab', 'Petab', 'Exab', 'Zettab', 'Yottab');
  Epsilon = 1 / 1024; // Wegen der Fließkommaungenauigkeit sicher nie falsch, verhindert außerdem Anzeigen wie "1024 KB"
var
  Index: Integer;
begin
  Index := Trunc(ln(ASize) / ln(2) / 10 + Epsilon);
  if AUseShortNames then
    Result := Format('%.2f %s', [ASize / (Int64(1) shl (Index * 10)), ShortUnits[Index]])
  else
    Result := Format('%.2f %s%s', [ASize / (Int64(1) shl (Index * 10)), LongUnits[Index], 'yte'])
end;
Wie sähe das denn in der Kibi-Schreibweise aus? Muss nur Epsilon auf 1000 geändert werden?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 08:48
Ich gehe mal stark davon aus, dass 99% aller Delphi-schreiber die Funktion unten benutzen, um Datengrößen visuell dazustellen.
Da frag ich mich wie Du Yotta berechnen willst, Int64 reicht da nicht. Und nein, ich machs immer selbst. Ich bin das 1 fehlende Prozent.
Wie sähe das denn in der Kibi-Schreibweise aus? Muss nur Epsilon auf 1000 geändert werden?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 08:53
Endlich mal ein Erfolgserlebnis in meinem Leben

Mir fällt aber noch was auf.
Google gibt bei direkter Eingabe in das Suchfeld 498000 Byte in KiloByte = 498 aus.
In KibiByte sind 498000 Bytes scheinbar 486,328125 KibiByte. Ist das so richtig?
Ich dachte immer Byte * 1024 = KiloByte.

Geändert von DieDolly (24. Jul 2018 um 09:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:06
Endlich mal ein Erfolgserlebnis in meinem Leben

Mir fällt aber noch was auf.
Google gibt bei direkter Eingabe in das Suchfeld 498000 Byte in KiloByte = 498 aus.
In KibiByte sind 498000 Bytes scheinbar 486,328125 KibiByte. Ist das so richtig?
Schon das zweit Glückserlebnis heute, alles richtig gemacht!

edit
Ich dachte immer Byte * 1024 = KiloByte.
Nee, das sind KibiByte bzw KiB.

edit #2
Mist ich glaub ich habe oben nen Fehler:
Byte / 1000 = KiloByte bzw KB
Byte / 1024 = KibiByte bzw KiB <<<< Das ist normalerweiser unter Windowsen das zu nehmende Mittel.
Gruß vom KodeZwerg

Geändert von KodeZwerg (24. Jul 2018 um 09:16 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:14
Damit ich alles richtig verstanden habe eine Zusatzfrage.
Windows zeigt beispielsweise eine Datei mit 1.839 KB und 1,79 MB an (1882784 Bytes).
Wenn ich das jetzt richtig verstanden habe, dann wäre hier Kibi und Mebi korrekt?

Geändert von DieDolly (24. Jul 2018 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:21
Byte / 1000 = Kilobyte
Byte / 1024 = KibiByte

1882784 / 1000 = 1882,784 KB
1882784 / 1024 = 1838,65625 KiB

1882,784 / 1000 = 1,882784 MB
1838,65625 / 1024 = 1,795562744140625 MiB

Wie Du nachkommastellen rundest überlasse ich Deiner Phantasie.
Gruß vom KodeZwerg

Geändert von KodeZwerg (24. Jul 2018 um 09:24 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:26
Dann hatte ich mit meiner Vermutung recht.
Danke für die Erklärung.

Interessant wäre nur zu wissen wie Windows rundet. Bei 1882784 Bytes in "MB" zeigt der Explorer 1,79 MB an. Sieht fast so aus, als ob die Nachkommastellen einfach abgeschnitten werden.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
628 Beiträge
 
Delphi XE6 Enterprise
 
#8

AW: Speichergrößen heutzutage korrekt interpretieren/betiteln

  Alt 24. Jul 2018, 09:11
Ich gehe mal stark davon aus, dass 99% aller Delphi-schreiber die Funktion unten benutzen, um Datengrößen visuell dazustellen.
Da frag ich mich wie Du Yotta berechnen willst, Int64 reicht da nicht. Und nein, ich machs immer selbst. Ich bin das 1 fehlende
Man kommt aber im realen Leben mit 64 Bit aus. Die maximale Dateigröße damit wäre 16 EiB (erreichbar z.B. mit ZFS). Die Großrechner von IBM haben zwar ein 128-Bit Dateisystem, aber die maximale Dateigröße ist trotzdem "nur" bei 1 TiB.
  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 23:23 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