Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

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 av Mr Burns
Lenke til kommentar
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...