AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi [Korrektur] Byte-Werte zwischen den Einheiten umrechnen
Thema durchsuchen
Ansicht
Themen-Optionen

[Korrektur] Byte-Werte zwischen den Einheiten umrechnen

Ein Thema von ChEeTaH · begonnen am 4. Jan 2010 · letzter Beitrag vom 4. Jan 2010
Antwort Antwort
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#1

[Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 14:10
Mein Vorschlag für Byte-Werte zwischen den Einheiten umrechnen:

Delphi-Quellcode:
function TfMain.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
  if ASize > 0 then // hinzugefügt
  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 else if AUseShortNames then // hinzugefügt
    Result := '0 ' + ShortUnits[0]
  else
    Result := '0 ' + LongUnits[0] + 'yte'; // hinzugefügt ende
end;
MfG ChEeTaH
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 14:47
selbes Thema ... wurde vor Kurzem schonmal durchgekaut:
Neuen Beitrag zur Code-Library hinzufügen -> Anmerkung zu einem Code-Library-Eintrag
(auch wenn es der Name nicht verrät ... PS: hätte man über Hier im Forum suchenFileSizeToStr entdecken können)

die Berechnung dort ist auch nett:
Object-Pascal / Delphi-Language -> Dateigröße formatieren?

noch was
Sonstige Fragen zu Delphi -> Dateigröße aufteilen in kB, MB,...

und was Neues (wurde im anderem Thread mit erwähnt)
Object-Pascal / Delphi-Language -> Grössenangabe automatische Umwandlung
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#3

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 15:26
oh sorry hab ich übersehen. Dafür hätte ich kein eigenes Thema eröffnen müssen, da es ja schon welche gibt

In keinem der Threads wird aber der Fall abgedeckt, bei dem die Inputgröße = 0 ist
Insofern also ein neuer Bug

MfG ChEeTaH
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 16:03
Zitat von ChEeTaH:
In keinem der Threads wird aber der Fall abgedeckt, bei dem die Inputgröße = 0 ist
Insofern also ein neuer Bug
bei meinen Codes sollte es da keine Probleme geben


und keine Sorge ... übersehn tut jeder schnell mal was und so ganz offensichtlich war der Thread nun auch nicht
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#5

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 16:53
Zitat von himitsu:
Zitat von ChEeTaH:
In keinem der Threads wird aber der Fall abgedeckt, bei dem die Inputgröße = 0 ist
Insofern also ein neuer Bug
bei meinen Codes sollte es da keine Probleme geben
Doch, in der Zeile beschwert sich der Compiler:
 Index := Trunc(ln(ASize) / ln(2) / 10 + Epsilon);
Zitat:
Gleitkommadivision durch Null


MfG ChEeTaH
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 18:15
neee, in meinem eigenem Code hab ich doch diese Logarithmus-Funktionen nicht genutzt
und darum gibt es dort dieses Problem nicht
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#7

Re: [Korrektur] Byte-Werte zwischen den Einheiten umrechnen

  Alt 4. Jan 2010, 18:36
Zitat von himitsu:
neee, in meinem eigenem Code hab ich doch diese Logarithmus-Funktionen nicht genutzt
und darum gibt es dort dieses Problem nicht
hoppla, hab vergessen, dass der zweite Code-Snippet nicht von dir ist
Er steht aber trotzdem in deinem Thread
  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 18:50 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