GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,
    TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;
你打开SysUtils.pas,就会发现如上的定义
TotalFree: PLargeInteger
PLargeInteger = ^TLargeInteger;
TLargeInteger = Int64;
你的freebytes是int64,所以传个函数用@freebytes

解决方案 »

  1.   

    您好,请问您的这个Delphi式的定义是哪儿来得GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;这是msdn的定义
    BOOL GetDiskFreeSpaceEx(
      LPCTSTR lpDirectoryName,                 // pointer to the directory name
      PULARGE_INTEGER lpFreeBytesAvailableToCaller, // receives the number of bytes on
                                                    // disk available to the caller
      PULARGE_INTEGER lpTotalNumberOfBytes,    // receives the number of bytes on disk
      PULARGE_INTEGER lpTotalNumberOfFreeBytes // receives the free bytes on disk
    );//附我的源代码 
    procedure TForm1.Button2Click(Sender: TObject);
    var userFreeBytes,totalBytes,freeBytes:Int64;
    begin
      if NOT GetDiskFreeSpaceEx(PChar(Edit1.Text),userFreeBytes,totalBytes,@freeBytes) then begin
        ShowMessage('操作失败');
        exit;
        end;
      Label3.Caption:='该驱动器总共容量'+Formatfloat('###,##0',totalBytes)+'字节'
        +#13+'该驱动器可用容量'+Formatfloat('###,##0',freeBytes)+'字节'
        +#13+'该驱动器可用用户容量'+Formatfloat('###,##0',userFreeBytes)+'字节';
    end;您的定义是如何得知的呢,delphi中查不到呀,谢谢!
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);
    var userFreeBytes,totalBytes,freeBytes:Int64;
    begin
      if NOT GetDiskFreeSpaceEx(PChar(Edit1.Text),userFreeBytes,totalBytes,@freeBytes) then begin
        ShowMessage('操作失败');
        exit;
        end;
      Label3.Caption:='该驱动器总共容量'+Formatfloat('###,##0',totalBytes)+'字节'
        +#13+'该驱动器可用容量'+Formatfloat('###,##0',freeBytes)+'字节'
        +#13+'该驱动器可用用户容量'+Formatfloat('###,##0',userFreeBytes)+'字节';
    end;