Mr Burns Skrevet 1. juli 2005 Del Skrevet 1. juli 2005 Heisann! Fant denne koden i C++, men er det noen funksjoner som finnes allerede for å finne relativ path? Lenke til kommentar
Mr Burns Skrevet 1. juli 2005 Forfatter Del Skrevet 1. juli 2005 (endret) Tror jeg fikk det til, trikset er å søke etter Path.DirectorySeparatorChar, og ikke "\\" eller @"\". Legger ved koden for andres fornøyelse. Sannsynligvis er det en del feilsjekk som burde være med... static public string GetRelativePath(string absDir, string filename) { // absDir should be a directory we need a relative path FROM. c:\foo\baz\ // filename should be a complete absolute path, e.g C:\foo\bar\file.txt // Returns relative path from absDir til filname, ..\bar\ string relPath = ""; int i = 0, levels = 0; absDir = absDir.ToLower(); filename = filename.ToLower(); // Check if file is on same disk if (filename[0] != absDir[0]) return filename; // Find last common character while ((i < filename.Length) && (i < absDir.Length) && (filename[i] == absDir[i]) ) { i++; } if (i == absDir.Length) i--; // Must go back to last "\" while (!absDir[i].Equals(Path.DirectorySeparatorChar)) { i--; } relPath = filename.Substring(i+1); // Don't want relPath to start with \ // Must insert correct number of "..\" // Count the number of \ after i, don't count the last \ in absDir for (int j = i;j < absDir.Length-1; j++) { if (absDir[j].Equals(Path.DirectorySeparatorChar)) relPath = "..\\" + relPath; } return relPath; } Endret 1. juli 2005 av Mr Burns Lenke til kommentar
GeirGrusom Skrevet 10. juli 2005 Del Skrevet 10. juli 2005 Forresten, alle OS godtar @'/' som directory separator, men det er best, som du sier, å bruke Path.DirectorySeparatorChar. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå