Hallo,
Also ich hab sowas mal in Perl programmiert und es da so gemacht:
Angenommen Du hast /temp/foo und willst auf /temp/other/bar.txt zugreifen.
1.) Du zerlegst beide Pfade ahnand des "/".
2.) Du vergleichst beide Pfaade Ebene für Ebende und merkst Dir die position, wo beide noch gleich sind:
->"/temp/" ->Poition 0.
3.) Du gehst in "temp/foo" weiter und schreibst für jedes Verzeichnis was noch folgt in deinen Relativen Pfad ein "../", ganz am Anfang muss ein "./" stehen, damits auch mit Dateien funkt. die im selben verzeichnis liegen
-> relativer pfad= "./../"
4.) Du gehst den zweiten Pfad von der in 1 gefundenen Position + 1 weiter, bis du zum ende kommst und übernimst jeden Verzeichnisnamen in deinen relativen Pfad:
Position 1: "other/"
->relativer Pfad = "./../other/"
Position 2: "bar.txt"
->relativer Pfad = "./../other/bar.txt"
Für andere Laufwerke muesstest halt noch ne Erkennung machen, ob das Laufwerk identisch ist und falls nicht, nen absoluten Pfad hernehmen.
Gruesse,
Joerg