Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bytes in GB formatieren? (https://www.delphipraxis.net/87027-bytes-gb-formatieren.html)

mlspider 22. Feb 2007 12:04


Bytes in GB formatieren?
 
Ich benötige die Ausgabe des freien Speicherplatzes eines gewählten Laufwerkes. Erledigt wird dies wie folgt:

Delphi-Quellcode:
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;
Der Aufruf:

Delphi-Quellcode:
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;
liefert das Ergebnis in Byte. Ich möchte beide Werte in GB formatieren. Aber wie?

TeronG 22. Feb 2007 12:05

Re: Bytes in GB formatieren?
 
N paar (3) mal duch 1024 teilen!?

(und evtl. mit RoundTo noch n bissl "Pimpen")

Phoenix 22. Feb 2007 12:07

Re: Bytes in GB formatieren?
 
Bytes / 1024 = KBytes
KBytes / 1024 = MBytes
MBytes / 1024 = GBytes

x Bytes / 1024 / 1024 / 1024 = y GBytes

stahli 22. Feb 2007 12:08

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 ;-)

Angel4585 22. Feb 2007 12:10

Re: Bytes in GB formatieren?
 
*am langsamsten bin*

2^10=Kilo
2^20=Mega
2^30=Giga
usw...

mlspider 22. Feb 2007 12:13

Re: Bytes in GB formatieren?
 
Delphi-Quellcode:
IntToStr(free_size div 1024 div 1024 div 1024) + #13 + 'total size=' +
IntToStr(total_size div 1024 div 1024 div 1024))
gibt mir zu ungenaue Angabe. Wie soll ich RoundTo anwenden?

Phoenix 22. Feb 2007 12:20

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:
free_size / (3* 1024)
und benutze FloatToString um den Wert dann mit ein paar Nachkommstellen zu formatieren.

mlspider 22. Feb 2007 12:25

Re: Bytes in GB formatieren?
 
Delphi-Quellcode:
ShowMessage('free space =' +
IntToStr(free_size / (3* 1024)) + #13 + 'total size=' +
IntToStr(total_size))
gibt einen Compilerfehler aus:

Es gibt keine überldene Version von IntToStr, die man mit diesen Argumenten aufrufen kann.

Die Muhkuh 22. Feb 2007 12:26

Re: Bytes in GB formatieren?
 
Zitat:

Zitat von Phoenix
und benutze FloatToString um den Wert dann mit ein paar Nachkommstellen zu formatieren.


Angel4585 22. Feb 2007 12:29

Re: Bytes in GB formatieren?
 
Zitat:

Zitat von Phoenix
Teile doch einfach echt mit:
Delphi-Quellcode:
free_size / (3* 1024)

:shock: Warum soll er durch 3072 teilen? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 3  1 23      

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