Autor Beitrag
DELPHIn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Windows Vista
Delphi 2007 für Win 32 Prof.
BeitragVerfasst: Mi 14.01.04 19:39 
Hallo,

ich möchte den freien Platz auf einer Festplatte bestimmen. Diskfree und ähnliche Funktionen kenne ich auch schon die verlangen aber alle entweder ein Byte oder ein PChar als Übergabe. Ich möchte aber einen beliebigen Pfad, also ein String, den der User zur Laufzeit eingibt nehmen und ihm die Daten wie Laufwerksgrösse und freier Speicher zurückgeben (auf die Festplatte bezogen auf der das Verzeichnis liegt).

Und genau da stehe ich auf dem Schlauch. :( Auch die Hilfe von Delphi oder dieses Forum haben mich bisher nicht weitergebracht.

Was kann ich tun, muss ja irgentwie gehen!

Danke

Moderiert von user profile iconTino: Verschoben.

_________________
DELPHIn
=> Errare humanum est
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Mi 14.01.04 19:51 
Path enthält den kompletten Pfadnamen inklusive dem Laufwerksbuchstaben in der Form [Laufwerk]:\Pfad

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function GetFreeSpace(const Path : String) : Int64;
var
  pPath : array[0..255of Char;
  Drive : Byte;
begin
  StrPCopy(pPath, UpperCase(Path));
  Drive  := ORD(pPath[0]) - 64;
  if (Drive >= 65and (Drive <= 91then begin
    Result := DiskFree(Drive);
  end else begin
    raise Exception.Create('Es wurde kein gültiger Pfad angegeben!');
  end;
end;


Ist nicht getestet, müßte aber so funktionieren.

Gruß
KidPaddle

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.01.04 20:37 
Oder:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function FreeDiskSpace(const Drive: stringvar FreeBytesAvailable,
  TotalNumberOfBytes, TotalNumberOfFreeBytes: TLargeInteger): Boolean;
begin
  result := GetDiskFreeSpaceEx(pointer(Drive), FreeBytesAvailable,
    TotalNumberOfBytes, @TotalNumberOfFreeBytes);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  FreeAvailable, Total, FreeBytes: TLargeInteger;
begin
  if FreeDiskSpace('c:\Programme', FreeAvailable, Total, FreeBytes) then
    with Listbox1.Items do
    begin
      Add(IntToStr(FreeAvailable));
      Add(IntToStr(Total));
      Add(IntToStr(FreeBytes));
    end
  else
    RaiseLastOSError();
end;
DELPHIn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Windows Vista
Delphi 2007 für Win 32 Prof.
BeitragVerfasst: Do 15.01.04 09:11 
Danke :P euch beiden für die Hilfe, da wäre ich nie drauf gekommen..

_________________
DELPHIn
=> Errare humanum est