function InternalGetDiskSpace(Drive: Byte;
  var TotalSpace, FreeSpaceAvailable: Int64): Bool;
var
  RootPath: array[0..4] of Char;
  RootPtr: PChar;
begin
  RootPtr := nil;
  if Drive > 0 then
  begin
    RootPath[0] := Char(Drive + $40);
    RootPath[1] := ':';
    RootPath[2] := '\';
    RootPath[3] := #0;
    RootPtr := RootPath;
  end;
  [red]Result := GetDiskFreeSpaceEx(RootPtr, FreeSpaceAvailable, TotalSpace, nil);[/red]
end;function DiskFree(Drive: Byte): Int64;
var
  TotalSpace: Int64;
begin
  if not InternalGetDiskSpace(Drive, TotalSpace, Result) then
    Result := -1;
end;
当用调用diskfree(0),是返回当前盘的磁盘剩余容量,但看程序中,如果实际参数是0,在diskfree中,形式参数drive值为0,在调用internalGetDiskSpace()函数时,其形式参数drive值为0,那么红色语句中RootPtr值为nil,但API函数GetDiskFreeSpaceEx定义中,Rootptr是为String,这怎么理解这个函数调用呢?
是不是这里的RootPtr是为一个以nil为结束符的空字符串?(另外,还请问一下,String是以nil结束的字符串,而Pchar不以nil结束的字符串吗?)还请各位高手指点一下,谢谢!