Relativer Pfad
-
Hallo!
Wie bekomme ich von einem absoluten Pfad, den Relativen zu einem bestimmten Ordner?
z.B.: C:\Ordner1\Ordner2\foo.txt relativ zu C:\Ordner1\xxx\ = ..\Ordner2\foo.txtDanke schon mal im Voraus!
-
da gibts win api befehle du du per invoke ansprechen kannst - wie die jetzt genau heißen weiß ich leider nicth mehr
-
-
da gibts win api befehle du du per invoke ansprechen kannst - wie die jetzt genau heißen weiß ich leider nicth mehr
ich glaub das so ein winapi befehl hier verwendet wird
http://rsn.gamedev.net/tutorials/ms3danim.asp
-
In dem Thread auf MyCSharp.de geht es leider nicht um einen Relativen Pfad und die WinAPI kann ich nicht verwenden, da das ganze Cross-Platform compatible sein muss.
Ich habe kurzerhand beschlossen selbst eine passenbe Funktion zu schreiben:private string GetRelativePath(string baseDir, string absPath) { if (Directory.GetDirectoryRoot(baseDir) != Directory.GetDirectoryRoot(absPath)) return absPath; int i = 0; while (Char.ToLower(baseDir[i]) == Char.ToLower(absPath[i])) { // see how much of the path matches ++i; if (i == baseDir.Length) { absPath = absPath.Substring(i); if (!absPath.StartsWith("." + Path.DirectorySeparatorChar)) { if (absPath[0] != Path.DirectorySeparatorChar) absPath = Path.DirectorySeparatorChar + absPath; absPath = '.' + absPath; } return absPath; } } while (baseDir[i] != Path.DirectorySeparatorChar) // trace back to the last matching directory --i; string relPath = absPath.Substring(i); baseDir = baseDir[baseDir.Length - 1] == Path.DirectorySeparatorChar ? baseDir.Substring(i, baseDir.Length - i - 1) : baseDir.Substring(i); int dirsInBase = 0; for (i = 0; i < baseDir.Length; ++i) { if (baseDir[i] == Path.DirectorySeparatorChar) dirsInBase++; } System.Text.StringBuilder sb = new System.Text.StringBuilder(); string dirUp = Path.DirectorySeparatorChar + ".."; for (i = dirsInBase; i > 0; --i) sb.Append(dirUp); return '.' + sb.ToString() + relPath; }
Danke trotzdem für die Tipps!
*EDIT: Fehler in der Funktion korrigiert, jetzt funzt es sicher richtig :)!