我不懂得应该怎样设置入参,请帮帮忙,谢谢!

解决方案 »

  1.   

    type
       VolumeInfoRecord = record
         RootPathName:           string;
         VolumeName:             string;
         VolumeSerialNumber:     string;
         MaxComponentLength:     DWORD;
         FileSystemFlags:        DWORD;
         FileSystemName:         string;
       end;var
      VolumeInfoRec: VolumeInfoRecord;
      VolumeNameBuffer: PChar;
      VolumeNameSize: DWORD;
      FileSystemNameBuffer: PChar;
      FileSystemNameSize: DWORD;
      VolSerial: DWORD;
      BufLen : DWORD;
      RPName :String;
    begin
      RPName :='C:\'; //可自己修改
      BufLen := MAX_PATH + 1;
      GetMem(VolumeNameBuffer, BufLen);
      GetMem(FileSystemNameBuffer, BufLen);
      try
        with VolumeInfoRec do begin
          VolumeNameSize := BufLen;
          FileSystemNameSize := BufLen;      // Get volume info with no automatic error
          SetErrorMode(SEM_NOOPENFILEERRORBOX);
          if GetVolumeInformation(PChar(RPName),
                                  VolumeNameBuffer,
                                  VolumeNameSize,
                                  @VolSerial,
                                  MaxComponentLength,
                                  FileSystemFlags,
                                  FileSystemNameBuffer,
                                  FileSystemNameSize) then begin
             //
             RootPathName       := RPName;
             VolumeName         := StrPas(VolumeNameBuffer);
             VolumeSerialNumber := IntToHex(HiWord(VolSerial), 4) + '-' +
                                   IntToHex(LoWord(VolSerial), 4);
             FileSystemName     := StrPas(FileSystemNameBuffer);
      finally
        FreeMem(VolumeNameBuffer);
        FreeMem(FileSystemNameBuffer);
      end; // try
    end;
      

  2.   

    oracle_lover:
        我在编译是为什么老提示finally处出错,请问finally有什么用处?
      

  3.   

    编译出错?什么错误?
    finally
        FreeMem(VolumeNameBuffer);
        FreeMem(FileSystemNameBuffer);
    的作用是无论前面的操作是否成功,最终都释放这两个变量占用的内存。因为这两个变量的内存是手动分配的,系统无法自动回收。