Problème avec std::string::find_first_not_of

Le
Michaël Delva
Bonjour à tous,

Je voudrais dans mon programme créer des "raccourcis" dans les chemins de
mes fichiers. Ex:

mon programme se trouve ici: "C:Program FilesMonAppapp.exe"
il me donne ceci: "$(MonApp)app.exe"

si un fichier se trouve sur un CDROM "D:fichier.txt"
il me donne ceci: "$(CDROM)fichier.txt"

Ceci afin de ne pas écrire en dur les chemins de mes fichiers, et que je
puisse "porter" le programme sur d'autres machines sans devoir tout
modifier.

Bref, j'arrive pour l'instant à modifier un chemin pour qu'il me prenne
en compte les raccourcis.

Mais détecter les raccourcis et réécrire le chemin me pose problème, du
moins pour le CD-ROM.

Si je lui passe ça: "$(MVS)\Stats\", il me donne bien "C:Program Files
MVSStats"

Par contre si je lui passe ça: "$(CDROM)\Stats\", il me donne
"C:Program FilesMVS(CDROM)Stats"


Voici la fonction:

//--
AnsiString __fastcall Load_Path(const AnsiString & path)
{
std::string old_path = path.c_str();

std::string::size_type begin = 0,
racc_app = 0,
racc_cd = 0;

//S'il ne trouve pas de raccourci, il retourne le path d'entrée
std::string new_path = old_path;

//Les variables
const std::string path_application = "C:\Program Files\MVS\";
const std::string path_CD = "D:\";
const std::string raccourci_MVS = "$(MVS)\";
const std::string raccourci_CDROM = "$(CDROM)\";

//On cherche le raccourci de l'application
racc_app = old_path.find_first_not_of(raccourci_MVS,begin);
//On cherche le raccourci du CDROM
racc_cd = old_path.find_first_not_of(raccourci_CDROM,begin);

if (racc_app != begin)
new_path = old_path.replace(begin,racc_app-1,path_application);
else if (racc_cd != begin)
new_path = old_path.replace(begin,racc_cd-1,path_CD);

return new_path.c_str();
}
//--

Vous voyez d'où ça peut venir?

Merci d'avance!
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michaël Delva
Le #169864
Bon, ben je viens de trouver:

AnsiString new_path;

racc = old_path.find(raccourci_MVS,begin);
racc_cd = old_path.find(raccourci_CDROM,begin);

if (racc == begin)
new_path = old_path.replace(begin,raccourci_MVS.size
(),path_application).c_str();
else if (racc_cd == begin)
new_path = old_path.replace(begin,raccourci_CDROM.size
(),path_CD).c_str();

fonctionne bien...

Désolé d'avoir posté pour rien!
Publicité
Poster une réponse
Anonyme