取得路径的简单格式
procedure TForm1.Button1Click(Sender: TObject);
var
p:array [0..30] of pchar;
begin
GetShortPathName('c:\asdgfrewy\aerhrth\aa',pchar(p[0]),length(p[0]));
showmessage(string(p[0]));
end;
返回的值是乱码或空值,请教!我的目的是想取得长路径的短路径格式,不知这个函数是否正确??

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    p:array [0..30] of char;  // pchar -> char
    begin
    GetShortPathName('c:\asdgfrewy\aerhrth\aa',p,length(p));
    showmessage(string(p));
    end;
    而且路径必须存在,不然也是返回空值
      

  2.   

    要强制类型转换也是
    PChar(@p)
    PChar(@p[0])p:array [0..30] of char;
    当然不是
    p:array [0..30] of PChar;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    p:array [0..30] of char;  // pchar -> char
    begin
    GetShortPathName('c:\asdgfrewy\aerhrth\aa',p,length(p));
    showmessage(string(p));
    end;
    而且路径必须存在,不然也是返回空值这个代码我回家试了,还是乱码,,怎么办??
      

  4.   

    p:array [0..200] of char;  
    太短也不行
      

  5.   

    干脆定义 p:array [0..MAX_PATH] of char; 算了
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    p:array [0..30] of char;  // pchar -> char
    begin
    GetShortPathName('c:\asdgfrewy\aerhrth\aa',p,length(p));
    showmessage(string(p));
    end;我试了,没有错,可能是你那儿有问题!