Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Freien Speicher auf dem aktuellen Datenträger ermitteln (https://www.delphipraxis.net/68622-freien-speicher-auf-dem-aktuellen-datentraeger-ermitteln.html)

EDatabaseError 2. Mai 2006 20:11


Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Ich hab nirgens einen Befehl gefunden mit dem man herausfindet wieviel speicher auf dem aktuellen Datenträger vorhanden ist. Kennt da jemand was? :drunken:

fkerber 2. Mai 2006 20:12

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Hi!

Und wieder hat Google gesprochen:
http://www.it-academy.cc/content/art...se.php?ID=1214 (etwas nach unten scrollen)


Ciao Frederic

EDatabaseError 2. Mai 2006 20:18

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
OK...
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;

procedure TForm1.Button1Click(Sender: TObject);
var
free_size, total_size: Int64;
begin
if GetDiskSize(laufwerksbuchstabe, free_size, total_size) then
ShowMessage('free space =' + 
IntToStr(free_size) + #13 + 'total size=' + 
IntToStr(total_size))
else
ShowMessage('Keine Disk im Laufwerk!');
end;
end;
Aber wie frag ich das vom aktuellen Laufwerk? In GetDir kann man 0 angeben. Aber wie mach ich es hier, hier muss ich ja einen Laufwerksbuchstaben angeben wie C oder D???

fkerber 2. Mai 2006 20:19

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Hi!

Ja, du solltest wissen, von welchem Laufwerk du den freien Speicherplatz ermitteln willst....
Wo genau ist da dein Problem?


Ciao Frederic

EDatabaseError 2. Mai 2006 20:35

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Woher weiß ich auf welchem Laufwerk der User meine Software installiert? Das ist noch ein kleines Problemchen... :gruebel:

Matze 2. Mai 2006 20:36

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Zitat:

Zitat von EDatabaseError
Woher weiß ich auf welchem Laufwerk der User meine Software installiert? Das ist noch ein kleines Problemchen... :gruebel:

Delphi-Quellcode:
ExtractFilePath(ParamStr(0))
liefert dir das Programmverzeichnis und das erste Zeichen

Delphi-Quellcode:
StringVar[1]
ist das Laufwerk.

fkerber 2. Mai 2006 20:37

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
HI!

Der User sollte den Pfad auswählen können. Nach dem Auswählen des Pfades könnte dieser bspw. in einem Edit dringstehen. Der erste Buchstabe des Edits sollte dann der Laufwerksbuchstabe sein.

Alternativ kannst du ja in einer Tabelle alle Festplatten auflisten - so wie es die meisten Installer tun...


Ciao Frederic

faux 2. Mai 2006 20:37

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Hallo!

Delphi-Referenz durchsuchenExtractFileDrive(ParamStr(0))

Grüße
Faux

Matze 2. Mai 2006 20:38

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Zitat:

Zitat von faux

:oops: Es geht also noch einfacher, als ich vorgeschlagen habe.

EDatabaseError 2. Mai 2006 20:42

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Danke!!!!
Läuft:
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;

procedure TForm2.Button2Click(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;
Und das für die Nachwelt :wink:

UNd nommal DANKE.


Mfg
Tobi

Hawkeye219 2. Mai 2006 22:16

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Delphi kennt übrigens noch eine weitere Möglichkeit, die Gesamtgröße eines Laufwerks und den verfügbaren freien Speicherplatz zu ermitteln:

Delphi-Quellcode:
procedure ShowDiskInfo (aDrive: Char);
  var TotalSize, FreeSize : Int64;
begin
  TotalSize := DiskSize(Ord(aDrive) - 64);
  FreeSize := DiskFree(Ord(aDrive) - 64);
  ShowMessage (Format('Total=%.0n, Free=%.0n', [1.0 * TotalSize, 1.0 * FreeSize]));
end;
Gruß Hawkeye

pacman1986 2. Mai 2006 22:27

Re: Freien Speicher auf dem aktuellen Datenträger ermitteln
 
Ich hab das jetzt für die codelib vorgeschlagen diese frage taucht öfters auf ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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