byterechner() - Bytes in größtmögliche Einheit umrechnen
Verfasst: 11.10.2006 12:42
Wichtig!
Auf Seite 6 gibt es ein Update, welches etwas schneller ist, als der "Gewinner" (Gott, klingt das eingebildet) des deutschen Contests!
»»» Gehe zu Seite 6
Das Update benutzt auch keine 'booleschen Ausdrücke' mehr, diese werden offiziell nämlich nicht unterstützt!
———————————————————————————————————————
Hallo!
Edit: Hier habe ich den Code mal nach vorn geholt und gleichzeitig nocheinmal verbessert. (Update: 0 Byte wurden als 1- byte umgerechnet, Fehler behoben)
Hier meine neue PB 4 Byterechner Prozedur.
rechnet beliebige Anzahl an Bytes mit Hilfe des neuen Types Quad in die größtmögliche Einheit um. Wer weiß schon, wie viel 4096096 Byte in KB sind?^^
Wer mag, kann ja die Prozedur erweitert hier posten, sodass ein oder zwei Stellen hinter dem Komma unrerstützt werden. Ich habe ein bisschen mit Modulo versucht, aber sofort die Krise gekriegt. Wäre an der extended Version interessiert
Meine Version rundet nämlich ab, weil es ja alles hinterm Komma weglässt.
Meine ältere Version des Byterechners arbeitete mit Floats, die Prozedur fliegt ie im Forum irgendwo noch rum. Diese unterstützte Kommazahlen, konnte dafür aber nicht so weit wie diese hier rechnen.
Auf Seite 6 gibt es ein Update, welches etwas schneller ist, als der "Gewinner" (Gott, klingt das eingebildet) des deutschen Contests!
»»» Gehe zu Seite 6
Das Update benutzt auch keine 'booleschen Ausdrücke' mehr, diese werden offiziell nämlich nicht unterstützt!
———————————————————————————————————————
Hallo!
Edit: Hier habe ich den Code mal nach vorn geholt und gleichzeitig nocheinmal verbessert. (Update: 0 Byte wurden als 1- byte umgerechnet, Fehler behoben)
Code: Alles auswählen
Procedure.s byterechner(byte.q, NbDecimals.l=0)
Protected unit.l
If byte
unit=Round(Log(byte)/Log(1024), 0)
EndIf
ProcedureReturn StrD(byte/Pow(1024, unit), NbDecimals*(unit And 1))+" "+StringField("Byte,KB,MB,GB,TB,PB,EB", unit+1, ",")
EndProcedure
Debug byterechner(-4096) ; ungültige Angabe wird zu "-1 Byte"
Debug byterechner(0) ; Eine Null-Byte große Datei bleibt auch 0 Byte groß :)
Debug byterechner(27101988) ; Bisherige Angaben bleiben ok
- Funktionstüchtig mit PB 4.01+
Beschreibung: Geht bis 8.999.999.999.999.999.999 Byte (7,8 EB)
Hier meine neue PB 4 Byterechner Prozedur.
rechnet beliebige Anzahl an Bytes mit Hilfe des neuen Types Quad in die größtmögliche Einheit um. Wer weiß schon, wie viel 4096096 Byte in KB sind?^^
Wer mag, kann ja die Prozedur erweitert hier posten, sodass ein oder zwei Stellen hinter dem Komma unrerstützt werden. Ich habe ein bisschen mit Modulo versucht, aber sofort die Krise gekriegt. Wäre an der extended Version interessiert

Meine Version rundet nämlich ab, weil es ja alles hinterm Komma weglässt.
Meine ältere Version des Byterechners arbeitete mit Floats, die Prozedur fliegt ie im Forum irgendwo noch rum. Diese unterstützte Kommazahlen, konnte dafür aber nicht so weit wie diese hier rechnen.
Code: Alles auswählen
Procedure.s byterechner(byte.q)
Protected einheit.s
If byte < 1024
ProcedureReturn Str(byte)+" Byte"
EndIf
If byte >= 1024
byte/1024
einheit.s=" KB"
EndIf
If byte >= 1024
byte/1024
einheit.s=" MB"
EndIf
If byte >= 1024
byte/1024
einheit.s=" GB"
EndIf
If byte >= 1024
byte/1024
einheit.s=" TB"
EndIf
If byte >= 1024
byte/1024
einheit.s=" PB"
EndIf
If byte >= 1024
byte/1024
einheit.s=" EB"
EndIf
ProcedureReturn Str(byte)+einheit.s
EndProcedure
Debug byterechner(4096096) ; 3 MB
Debug byterechner(1024) ; 1 KB
Debug byterechner($FFFFFF) ; 15 MB
Debug byterechner(21456985147) ; 19 GB