━━━━━━━━━━━━━━━━━━━━━
首部  function IncludeTrailingPathDelimiter(const S: string): string; $[SysUtils.pas
功能  返回包括最后路径分隔符
说明  最后一个字符是路径分隔符则不变;否则加上一个路径分隔符返回
参考  function SysUtils.IsPathDelimiter;function System.Length
例子  Edit1.Text := IncludeTrailingPathDelimiter(Edit2.Text);
━━━━━━━━━━━━━━━━━━━━━
首部  function ExcludeTrailingPathDelimiter(const S: string): string; $[SysUtils.pas
功能  返回排除最后路径分隔符
说明  最后一个字符不是路径分隔符则不变;否则减去最后的路径分隔符返回
参考  function SysUtils.IsPathDelimiter;function System.Length;function System.SetLength
例子  Edit1.Text := ExcludeTrailingPathDelimiter(Edit2.Text);
━━━━━━━━━━━━━━━━━━━━━

解决方案 »

  1.   

    //form
    http://zswang.51.net/document/zsdoc02.txt
      

  2.   

    判断最后一个字符是不是路径分隔符(UNIX是'/', WINDOWS是'\')
    IsPathDelimiter(MyPath, length(MyPath));在文件名前加'\'
    var
     oldname,newname:string;
    begin
     setlenth(newname,length(oldname)+1);
     newname[1]:='\'
     for i:=1 to length(oldname) do
      newname[i+1]:=oldname[i];
    end;去掉路径名尾的'\'
    if IsPathDelimiter(MyPath, length(MyPath)) then
     setlength(MyPath,length(MyPath)-1);
      

  3.   

    1:if dirname[length(dirname)]='\' then...
    2:fn:='\'+fn;
    so:
    if dirname[length(dirname)]<>'\' 
    then s:=dirname+'\'+fn else s:=dirname+fn;