PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → ExtraitChaîne
ExtraitChaîne
Iniciado por augure2004, 18,nov. 2019 11:12 - 10 respuestas
Publicado el 18,noviembre 2019 - 11:12
Bonjour,

Cela fait plusieurs jours que je cherche mais je ne trouve pas de solution, je sollicite donc votre aide .
j'ai le chemin d'un fichier qui ressemble à ça

C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}

et je voudrais récupérer dans un libellé les dossiers après Mozilla donc :

Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}

j ai essayer plusieurs paramètre avec extraichaine mais aucun ne fonctionne.

merci
Miembro registrado
117 mensajes
Publicado el 18,noviembre 2019 - 11:35
pourquoi ne pas remplir une variable chaine par ton chemin de fichier, de remplacer les "\" par des RC et ensuite de faire des traitements sur la chaine obtenue

un truc du genre :

monFichier est une chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
répertoire est une chaîne
monFichier = Remplace(monFichier, "\", RC)
//le contenu devient :
//C:
//Users
//AppData
//Roaming
//Mozilla
//Extensions
//{3550f703-e582-4d05-9a08-453d09bdfdc6}

POUR TOUT répertoire de mon Fichier SEPAREE PAR RC
//réalise les traitements sur la chaine
FIN


un truc du genre, je te donne une piste, à toi de la développer ^^
Mensaje modificado, 18,noviembre 2019 - 11:35
Publicado el 18,noviembre 2019 - 11:47
Merci pour votre réponse .

Mais j'ai plusieurs liens a traiter , je n ai jamais le même chemin donc cela sera donc très compliqué
Miembro registrado
117 mensajes
Publicado el 18,noviembre 2019 - 11:52
pour faciliter le traitement, si le chemin qui se trouve avant ce que tu veux manipuler est constant, tu peux aussi faire appel à un traitement de la chaine

un truc du genre :

monFichier = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"

//Tu cherches à ôter "C:\Users\AppData\Roaming\Mozilla\" de la chaine d'origine, c'est à dire, ôter 33 caractères

monFichier = monFichier[[33 A]]
// retourne "Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"

//ensuite, soit tu fais tes traitements sur la chaine obtenue, soit tu reprends l'idée que j'ai proposé plus haut pour structurer ta chaine en vue de traitements ultérieurs
Miembro registrado
117 mensajes
Publicado el 18,noviembre 2019 - 12:01
ah, je n'ai pas vu le message avant l'envoi du dernier.

Sinon, si tu as une constante dans ta chaine (genre "Mozilla"), tu peux aussi utiliser la fonction position()

exemple :

monFichier est une chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
n est un entier

n = Position(monFichier, "Mozilla\", 0, DepuisFin) //va te renvoyer la position du caractère caractère "\" à la fin de Mozilla (donc 33 dans le cas présent

monFichier = monFichier[[n A]] //renvoie "Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"


A vérifier, j'ai tapé ça au talent ^^
Miembro registrado
4.361 mensajes
Publicado el 18,noviembre 2019 - 13:10
Bonjour,
Tu as une chaîne sChemin de la forme sPartieFixe\sPartieVariable dont tu cherches à extraire sPartieVariable
nTailleChemin est entier
nTailleResultat est entier

nTailleChemin=Taille(sChemin)
nTailleResultat=nTailleChemin-(Taille(sPartieFixe)+1) //+1 pour le "\"

sPartieVariable=Droite(sChemin,nTailleResultat)


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
166 mensajes
Publicado el 18,noviembre 2019 - 13:11
Bonjour;

Une idée parmi d'autres

sMotRéférence est une chaîne = "Mozilla"

// sMotRéférence n'existe pas dans sMonChemin
sMonChemin0 est une chaîne = "C:\Users\AppData\Roaming\TOTO-TOTO-TOTO\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"

// il y a au moins un caractère après sMotRéférence dans sMonChemin
sMonChemin1 est une chaîne = "Mozilla\C:\Users\AppData\Roaming\TOTO-TOTO-TOTO\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
sMonChemin2 est une chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
sMonChemin3 est une chaîne = "C:\Users\AppData\Roaming\TOTO-TOTO-TOTO\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}\Mozilla\"

// aucun caractère après sMotRéférence dans sMonChemin
sMonChemin4 est une chaîne = "C:\Users\AppData\Roaming\TOTO-TOTO-TOTO\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}\Mozilla"


sMonChemin est une chaîne = sMonChemin4 // (remplacer 0 par 1, 2, 3 ou 4)


SI Position(sMonChemin,sMotRéférence) > 0 ALORS

SI Taille(sMonChemin)-(Position(sMonChemin,sMotRéférence)+Taille(sMotRéférence)-1) = 0 ALORS
Info("Aucun caractère après le mot référence")
SINON
Info(Droite(sMonChemin,Taille(sMonChemin)-(Position(sMonChemin,sMotRéférence)+Taille(sMotRéférence))))
FIN

SINON
Info("n'existe pas")
FIN


Bon Dev
Miembro registrado
1.640 mensajes
Publicado el 18,noviembre 2019 - 15:05
Bonjour,

sChemin est une chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
sChemin = (ExtraitChaîne(sChemin,2,"Mozilla\"))


Avec ce code, on obtient bien "\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
Publicado el 19,noviembre 2019 - 10:57
Bonjour,

Je voulais tous vous remercier pour le temps que vous m'avez accordé et les codes que vous m'avez fourni ( plus particulièrement François C. car c 'est le code que j'ai utilisé ), heureusement qu'il y a des gens comme vous qui aidez les novices comme moi.

encore un grand MERCI :merci::merci:
Miembro registrado
324 mensajes
Publicado el 19,noviembre 2019 - 14:15
sCheminFull est chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
bMozil est un booléen = Faux
sFinChemin est une chaîne = ""

POUR TOUTE chaîne sRep de sCheminFull SEPAREE PAR "\"
SI sRep = "Mozilla" ALORS bMozil = Vrai
SI bMozil ALORS sFinChemin += ["\"]+sRep
FIN


Marche avec n'importe qu'elle chemin, a la fin sFinChemin vaut
sFinChemin = Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}
Mensaje modificado, 19,noviembre 2019 - 14:16
Miembro registrado
953 mensajes
Publicado el 19,noviembre 2019 - 14:52
bonjour,

je viens ajouter ma pierre à l'édifice

sCheminFull est chaîne = "C:\Users\AppData\Roaming\Mozilla\Extensions\{3550f703-e582-4d05-9a08-453d09bdfdc6}"
sFinChemin est une chaîne=sCheminFull[[Position(sCheminFull,"\",Position(sCheminFull,"\",0,DepuisFin)-1,DepuisFin)+1 À]]


çà prend les deux derniers dossiers d'un chemin...

bon dèv ;)