GetTempPath(255,@s3);
  GetCurrentDirectory(255,@s4);
    Edit3.Text:=s3;
  Edit4.Text:=s4;
以上代码,获取目录为什么是这样的?:C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
C:\Program Files\Borland\Delphi7\Projects\获得目录
一个为什么有~号呢,能获取长路径吗?

解决方案 »

  1.   

    貌似跟系统有关系吧,DOS下经常有这种目录出现。
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        s3: array[0..255] of char;
        szShortPath: array[0..255] of char;
        szLongPath: array[0..255] of char;
        pDummy: PCHAR;
    begin
        GetCurrentDirectory(255, s3);    GetShortPathName(s3, szShortPath, 255);
        Edit3.Text := szShortPath;    GetFullPathName(s3, 255, szLongPath, pDummy);
        Edit4.Text := szLongPath;
    end;
      

  3.   

    3楼妖哥那个GetFullPathName可以的啊,就是这个API
      

  4.   


    function GetLongPathName(ShortPathName: PChar; LongPathName: PChar; cchBuffer: Integer): Integer; stdcall; external 'kernel32.dll' name 'GetLongPathNameA';function ToLongPath(AFileName: string): string;
    var
      Buffer: array[0..260] of Char;
    begin
      Result := AFileName;
      if (GetLongPathName(PChar(AFileName), Buffer, SizeOf(Buffer)) <> 0) then
        Result := Buffer;
    end;