Function RightSub(s:string; Len:Integer) : string; begin Delete(s,1,Length(s)-Len); Result := s; end; //交换字串 procedure swapStr(var s1,s2 : string); var tempstr : string; begin tempstr := s1; s1 := s2; s2 := tempstr; end;
// 取两个目录的相对路径,注意串尾不能是'\'字符! Function GetRelativePath(Source,Dest : string) : string; Function GetPathComp(s1,s2:string) : integer; //比较两路径字符串头部相同串的函数 var s:string; begin if length(s1) > Length(s2) then swapStr(s1,s2);
Result := pos(s1,s2); s:=s1; while Result = 0 do begin s1 := ExtractFileDir(s1); if (s='') or (s=s1) then begin //修正因ExtractFileDir()处理'c:\'时产生的错误. Result:=-1; exit; end; s:=s1; Result := pos(s1,s2); end;
if Result <> 0 then Result := Length(s1);
End;
Function GetRoot(s : ShortString) : string; //取Dest的相对根路径的函数 var i : integer; begin Result := ''; for i := 1 to Length(s) do if s[i] = '\' then Result := Result + '..\'; if Result = '' then Result := '.\'; //如果不想处理成"."的路径格式,可去掉本行 end;
var RelativRoot, RelativSub : string; HeadNum : integer; begin Source := UpperCase(Source); Dest := UpperCase(Dest);
//比较两路径字符串头部相同串 HeadNum := GetPathComp(Source,Dest); if headNum=-1 then begin result:=Source; exit; end;