begin process at 2008 07 19 16:41:49
1 212 905 membres
227 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTIR CHEMIN RELATIF EN CHEMIN ABSOLUE (POUR DISQUE DUR)


Information sur la source

Description

ce code est un complement de l'utilisation de GetFullPathName() qui necessite un fichier existant

char r[1024]="c:\\f\\g\\";
AbsolutePath("\\.\\..\\..\\essai\\essai2\\fichier.txt",r); // retournera c:\essai\essai2\fichier.txt

Source

  • bool AbsolutePath(const char *relatif,char *actualpath)
  • {
  • unsigned int pos= 0;
  • if (strstr(relatif,":\\")) {
  • strcpy(actualpath,relatif);
  • return true;
  • }
  • char *t = strrchr(actualpath,'\\');
  • if (*t == '\\' && *(t+1) != '\0') *t = '\0';
  • while (relatif[pos]) {
  • if (relatif[pos] == '.' && relatif[pos+1] == '\\') {
  • pos += 2;
  • } else if (relatif[pos] == '.' && relatif[pos+1] == '.' && relatif[pos+2] == '\\' ) {
  • pos += 3;
  • char *l = strrchr(actualpath,'\\');
  • if (*(l-1) == '\\') return false;
  • *l = '\0';
  • } else if (relatif[pos] == '\\') {
  • pos++;
  • } else {
  • char *end = strchr(actualpath,'\0');
  • while (relatif[pos] != '\\' && relatif[pos] != '\0') {
  • *end = relatif[pos];
  • pos++;
  • *end++;
  • }
  • if (relatif[pos] == '\\' ) { *end = '\\'; *end++; }
  • *end = '\0';
  • }
  • }
  • return true;
  • }
bool AbsolutePath(const char *relatif,char *actualpath)
{
	unsigned int pos= 0;

	if (strstr(relatif,":\\")) {
		strcpy(actualpath,relatif);
		return true;
	}

	char *t = strrchr(actualpath,'\\');
	if (*t == '\\' && *(t+1) != '\0') *t = '\0';


	while (relatif[pos]) {
		if (relatif[pos] == '.' && relatif[pos+1] == '\\') {
			pos += 2;
		} else if (relatif[pos] == '.' && relatif[pos+1] == '.' && relatif[pos+2] == '\\' ) {
			pos += 3;
			char *l = strrchr(actualpath,'\\');
			if (*(l-1) == '\\') return false;
			*l = '\0';
		} else if (relatif[pos] == '\\') {
			pos++;
		} else {
			char *end = strchr(actualpath,'\0');

			while (relatif[pos] != '\\' && relatif[pos] != '\0') {
				*end = relatif[pos];
				pos++;
				*end++;
			}
			if (relatif[pos] == '\\' ) { *end = '\\'; *end++; }
			*end = '\0';
		}
	}
	
	return true;
}
  • signaler à un administrateur
    Commentaire de maher0510 le 17/07/2008 16:13:28 8/10

    je cherche une fonction qui fait presque la même chose que la votre, mais le soucis ça marche pas : ça bug au build (même que je l'ai testé séparément et ça marche) car je dois passer des QString comme paramètres ( et je pense que c'est à cause de ça votre fonction ne marche pas, mais je fais des cast de genre :

    AbsolutePath(const_cast<char*>(toolData.mPrjDir.ascii()), const_cast<char*>(makefilePath.ascii()));)

    Est ce que vous pouvez  m'aider à trouver la sol°, c'est merci de votre part

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS