获得当前盘符下的剩余磁盘空间,用那个函数最好?(100分)

  • 主题发起人 主题发起人 delphi_lsl
  • 开始时间 开始时间
D

delphi_lsl

Unregistered / Unconfirmed
GUEST, unregistred user!
getdiskfreespace? or getdiskfreespaceex?
or GetFreeSpaceForDrive or....
我发现getdiskfreespace经常返回不成功,是不是不适合大硬盘?
用getdiskfreespaceex,我不知道怎样得到其值?
用GetFreeSpaceForDrive,不知道要申明那个单元,直接用是不行的。
有哪位大侠帮忙解释一下,100分奉上。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=684443
 
最好用GetDiskFreeSpaceEx()函数,getdiskfreespace()支持空间有上限,好像是2G?

Function GetDiskFreeSpaceEx(lpDirectoryName: PChar;
; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: Integer;
; lpTotalNumberOfFreeBytes: PInteger): BOOL; stdcall;

如:
type
; TTestDiskFreeRec = record
; ; lpFreeBytesAvailableToCaller,
; ; Safety1,
; ; lpTotalNumberOfBytes,
; ; Safety2,
; ; lpTotalNumberOfFreeBytes,
; ; Safety3 : Integer;
; end;

procedure TForm1.Button1Click(Sender: TObject);
var
; lpFreeBytesAvailableToCaller,
; lpTotalNumberOfBytes,
; lpTotalNumberOfFreeBytes : TLargeInteger;
begin
; if WinFix.GetDiskFreeSpaceEx('C:/', lpFreeBytesAvailableToCaller,
lpTotalNumberOfBytes, @lpTotalNumberOfFreeBytes) then
; begin
; ; Writeln('lpFreeBytesAvailableToCaller: ',lpFreeBytesAvailableToCaller.QuadPart:0:0);
; end;
end;
 
谢谢YB-unique
我知道一种直接调用的方法了,看看下面的程序,是不是更为简单:)
procedure TForm1.Button1Click(Sender: TObject);
var
; lpFreeBytesAvailableToCaller:int64;
; lpTotalNumberOfBytes:int64;
; lpTotalNumberOfFreeBytes : TLargeInteger;
begin
; if GetDiskFreeSpaceEx('C:/', lpFreeBytesAvailableToCaller,
lpTotalNumberOfBytes, @lpTotalNumberOfFreeBytes) then
; begin
; ; showmessage(inttostr(lpFreeBytesAvailableToCaller));
///或showmessage(inttostr(lpTotalNumberOfFreeBytes));
; end;
end;
 
后退
顶部