Hi zusammen
Mit folgendem Code (/von hier) ermittle ich meine Laufwerke und deren freien Speicher:
Delphi-Quellcode:
function TPopUpWindow.DedectBiggestFreeSpace: Char;
var i :integer; PopupWindow: TPopupWindow;
begin
PopupWindow := TPopupWindow.Create(Self);
PopupWindow.PopupMode := pmExplicit;
PopupWindow.PopupParent := HomeOfficerFeMain;
PopupWindow.RzPageControl1.ActivePage := PopupWindow.RzPageControl1.Pages[0];
PopUpWindow.Position := poMainFormCenter;
PopUpWindow.GetAllDrives;
end;
function TPopUpWindow.GetAllDrives: TStringDynArray;
var i: Integer; space : Int64;
begin
Result := TDirectory.GetLogicalDrives;
for i:=Low(Result) to High(Result) do
begin
Result[i] := GetOneDrive(Result[i]);
space := DiskFree(i);
RzRadioGroup1.Items.Add(Result[i] +' -- ' + Inttostr(space));
end;
end;
function TPopUpWindow.GetOneDrive(const Drive: string): string;
{Returns the display name for the drive with the given root path.}
var FI: TSHFileInfo; // info about drive
begin
if ShellAPI.SHGetFileInfo(PChar(Drive), 0, FI, SizeOf(FI),
ShellAPI.SHGFI_DISPLAYNAME ) = 0 then
RaiseLastOSError;
Result := FI.szDisplayName;
end;
Und so sieht das dann aus:
Der Grund dafür:
DiskFree liefert –1, wenn die Laufwerksnummer ungültig ist.
Und nun? Wie geht es verünftig weiter?
Gruss
Delbor
PS: Ich denk, ich hab eine Teilantwort gefunden: D: und E: sind Partitionen auf F:.
Der User soll mit diesem Dialog einen Speicherort für eine Anwendungsgebundene SQLite-
DB festlegen.