Restored from previous forum. Originally posted by GPI.
Code: Select all
Procedure.s relativ_path(in1$,in2$)
in1=1
in2=1
out$=""
Repeat
a1$=StringField(in1$,in1,"\")
a2$=StringField(in2$,in2,"\")
If a1$="" And a2$=""
quit=1
Else
If a1$=a2$
in1+1
in2+1
Else
quit=0
Repeat
a1$=StringField(in1$,in1,"\")
If a1$ <> ""
out$+"..\"
in1+1
Else
quit=1
EndIf
Until quit
quit=0
Repeat
a2$=StringField(in2$,in2,"\")
If a2$ <> ""
If Right(a2$,1)=":"
out$=a2$+"\"
Else
out$+a2$+"\"
EndIf
in2+1
Else
quit=1
EndIf
Until quit
EndIf
EndIf
Until quit
ProcedureReturn out$
EndProcedure
Procedure.s derelativ_path(in1$,in2$)
out$=""
If Right(StringField(in2$,1,"\"),1) <> ":"
an=1:quit=0
Repeat
If StringField(in1$,an,"\") <> ""
an+1
Else
quit=1
EndIf
Until quit
quit=0
Repeat
If Left(in2$,3)="..\"
an-1
in2$=Mid(in2$,4,Len(in2$)-3)
Else
quit=1
EndIf
Until quit
For i=1 To an-1
out$+StringField(in1$,i,"\")+"\"
Next
EndIf
out$+in2$
ProcedureReturn out$
EndProcedure
in1$="e:\files\delta\omega\delta\epsilon\3\";start
in2$="e:\files\delta\omega\exe\";end
x$=relativ_path(in1$,in2$)
Debug x$
Debug derelativ_path(in1$,x$)