Delphi-PRAXiS
Seite 1 von 2  1 2      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Seite 1 von 2  1 2      

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