Relative path
BlitzMax Forums/BlitzMax Programming/Relative path
| ||
Hi all, is there a way to extract a files path relative to another file. For example, source - "C:/folder1/folder2/file1.exe" dest - "C:/folder1/folder3/file2.dat" result - "../folder3/file2.dat" Any help would be appreciated. Thank you. |
| ||
Don't really understand the question. Something like ChangeDir("C:/folder1/")? |
| ||
write a function that compares the two strings from the start to the end. When they don't match anymore build the correct relative path and return it. Use the string methods to look for / and \, somthing like this Local index:Int = filename.FindLast("/") Local path:String = "" If index=-1 Then index = filename.FindLast("\") If index<>-1 Then path=filename[..index] |
| ||
I was hoping to avoid doing this myself. Anyway I've had a go. If there's anyone who is more knowledgable about these things than me that could check it over and tell me if I'm doing this right I'd much appreciate it.Strict Local source:String=RequestFile("source") Local destination:String=RequestFile("destination") Print ExtractRelativePath(source,destination) Function ExtractRelativePath:String( src:String, dest:String ) src=ExtractDir(RealPath(src)) dest=RealPath(dest) Local count:Int=0 While src<>Left(dest,Len(src)) count:+1 Local i:Int=src.FindLast("/") src=src[..i] Wend dest=dest.Replace(src,"") dest=dest[1..] For Local i:Int=1 To count dest="../"+dest Next Return dest End FunctionI have no idea if it's cross platform, but it seems to work on windows. Surely someone has already done this? Thanks. |