![]() |
Bytes in GB formatieren?
Ich benötige die Ausgabe des freien Speicherplatzes eines gewählten Laufwerkes. Erledigt wird dies wie folgt:
Delphi-Quellcode:
Der Aufruf:
function GetDiskSize(drive: Char; var free_size, total_size: Int64): Boolean;
var RootPath: array[0..4] of Char; RootPtr: PChar; current_dir: string; begin RootPath[0] := Drive; RootPath[1] := ':'; RootPath[2] := '\'; RootPath[3] := #0; RootPtr := RootPath; current_dir := GetCurrentDir; if SetCurrentDir(drive + ':\') then begin GetDiskFreeSpaceEx(RootPtr, Free_size, Total_size, nil); SetCurrentDir(current_dir); Result := True; end else begin Result := False; Free_size := -1; Total_size := -1; end; end;
Delphi-Quellcode:
liefert das Ergebnis in Byte. Ich möchte beide Werte in GB formatieren. Aber wie?
procedure TForm1.Button1Click(Sender: TObject);
var s: String; free_size, total_size: Int64; begin s := ExtractFileDrive(ParamStr(0)); showmessage(s[1]); if GetDiskSize(s[1], free_size, total_size) then ShowMessage('free space =' + IntToStr(free_size) + #13 + 'total size=' + IntToStr(total_size)) else ShowMessage('Keine Disk im Laufwerk!'); end; |
Re: Bytes in GB formatieren?
N paar (3) mal duch 1024 teilen!?
(und evtl. mit RoundTo noch n bissl "Pimpen") |
Re: Bytes in GB formatieren?
Bytes / 1024 = KBytes
KBytes / 1024 = MBytes MBytes / 1024 = GBytes x Bytes / 1024 / 1024 / 1024 = y GBytes |
Re: Bytes in GB formatieren?
1 KB = 1024 Byte
1 MB = 1024 KB 1 GB = 1024 MB Stahli PS: Ich war zu langsam, aber auch gut ;-) |
Re: Bytes in GB formatieren?
*am langsamsten bin*
2^10=Kilo 2^20=Mega 2^30=Giga usw... |
Re: Bytes in GB formatieren?
Delphi-Quellcode:
gibt mir zu ungenaue Angabe. Wie soll ich RoundTo anwenden?
IntToStr(free_size div 1024 div 1024 div 1024) + #13 + 'total size=' +
IntToStr(total_size div 1024 div 1024 div 1024)) |
Re: Bytes in GB formatieren?
Div schmeisst ja auch die Nachkommastellen weg - und wenn Du dreimal durch ~1000 Teilst wird die Zahl kleiner und damit werden die Nachkommawerte wichtiger.
Teile doch einfach echt mit:
Delphi-Quellcode:
und benutze FloatToString um den Wert dann mit ein paar Nachkommstellen zu formatieren.
free_size / (3* 1024)
|
Re: Bytes in GB formatieren?
Delphi-Quellcode:
gibt einen Compilerfehler aus:
ShowMessage('free space =' +
IntToStr(free_size / (3* 1024)) + #13 + 'total size=' + IntToStr(total_size)) Es gibt keine überldene Version von IntToStr, die man mit diesen Argumenten aufrufen kann. |
Re: Bytes in GB formatieren?
Zitat:
|
Re: Bytes in GB formatieren?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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