Entwickler-Ecke

Sonstiges (Delphi) - Festplattenspeicher ermitteln


hibbert - Mo 04.11.02 17:39
Titel: Festplattenspeicher ermitteln
hallo,
ich habe eine code im internet gefunden, der mir den festplattenspeicher und weiteres anzeigt.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  freeSpace, totalSpace: Double;
  s: Char;
begin
  // Drive letter
  // Laufwerksbuchstabe
  s := 'C';

  freeSpace  := DiskFree(Ord(s) - 64);
  totalSpace := DiskSize(Ord(s) - 64);
  label3.caption:=Format('Freier Speicherplatz: %12.0n', [freeSpace])+chr(13)+Format('Verfügbarer Speicherplatz: %12.0n', [totalSpace]);
end;

so, dieser code, so weit ich das richtig gesehen haben, gibt mir nur die größe in k an ! ich möchte aber, dass die angezeigte größe in MB angeben wird.
ich möchte allerdings kein kompliziertes rechenverfahren haben.

mfg hibbert


Anonymous - Mo 04.11.02 18:27

So auf die Schnelle würde ich sagen


Quelltext
1:
KiloByte / 1024                    


oder bei Byte


Quelltext
1:
Byte / Sqr(1024)                    


Luca - Mo 04.11.02 18:31

Hallo,

Die Funktion DiskFree und DiskSize geben dir die Größe in Byte an. (siehe Delphi Help)
Um dann Bytes in MBytes um zuwandlen geht es so

Quelltext
1:
freespace := DiskFree(Drive) div 1024 div 1024                    

Beim ersten div bekomms du KByte beim zweiten div MByte


Anonymous - Mo 04.11.02 21:30

Wenn du div benutzt, dann werden die Nachkommastellen abgeschnitten. 0.99MegaByte ist fast ein MegaByte.

Beispiel:

x := (999 * 1024 * 1024) - 1;
//999 MegaByte minus 1 Byte

Rechnung 1:

y := x / sqr(1024); // Ergebnis = 998,99999904632568359375

Rechnung 2:

y := x div 1024 div 1024; // Ergebnis = 998


hibbert - Di 05.11.02 16:01

hää??
irgendwie vesteh ich garnichts mehr.
kann mir jemand vielleicht ein beispiel geben, denn wenn ich den code


Quelltext
1:
freespace := DiskFree(Drive) div 1024 div 1024                    


einfach dran hänge, dann funzt nichts mehr!!

please hlp me !!

mfg hibbert


LCS - Di 05.11.02 19:27

Hi
in deinem ersten Posting
hibbert hat folgendes geschrieben:


Quelltext
1:
freeSpace  := DiskFree(Ord(s) - 64);                    


und jetzt:
hibbert hat folgendes geschrieben:


Quelltext
1:
freespace := DiskFree(Drive) div 1024 div 1024                    


Siehst du den Unterschied? Das liegt nicht an der Division sondern an deinem Übergabeparameter. DiskFree übernimmt keinen Laufkwerksbuchstaben sondern eine Zahl
Borland hat folgendes geschrieben:

DiskFree liefert die Anzahl der freien Bytes auf dem mit Drive angegebenen Laufwerk (0 = aktuelles Laufwerk, 1 = A, 2 = B usw.).

Bei einer ungültigen Laufwerksnummer wird -1 zurückgegeben.

Wenn du Laufwerk C testen willst, musst du als Parameter 3 übergeben. Deshalb die Parameterübergabe mit Ord(s) - 64.

Gruss Lothar


hibbert - Di 05.11.02 20:03

Danke,
da war ich wohl mal wieder blind, hatte nämlich viel stress !
sorry meine eigene dummheit! :oops:

:lol: mfg hibbert

ps auf
Zitat:
sorry meine eigene dummheit!
muss keiner antworten ! :wink: