CHEMIN ABRÉGÉ D'UN FICHIER COMME DANS WORD ET EXCEL QD LA TAILLE EST TROP LONGUE

jmlucienvb Messages postés 129 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 12 février 2009 - 7 oct. 2004 à 08:52
cs_intertek Messages postés 9 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 8 octobre 2004 - 8 oct. 2004 à 13:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26627-chemin-abrege-d-un-fichier-comme-dans-word-et-excel-qd-la-taille-est-trop-longue

cs_intertek Messages postés 9 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 8 octobre 2004
8 oct. 2004 à 13:23
Ok je vois bien vu :)
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
8 oct. 2004 à 12:45
Okidoki....le pb, cest le nom de ton fichier ; il fait plus de 100 caracteres ! :o(

il faudrait ajouter un test avant la boucle pour gérer ce cas là. Et pour renvoyer une chaine sous cette forme :

"c:\...\x86_Microsoft.Tools.VisualCPlusPlus.Runtim..."

le nom du fichier doit etre raccourci de (maxlenght - 10) caracteres en partant de la gauche... Si tu veux suivre l'exemple de Office ;op

Jai pô le temps de le corriger et mettre à jour... Pense à nous si tu le fais ;o)
cs_intertek Messages postés 9 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 8 octobre 2004
8 oct. 2004 à 09:03
bé en fait j'ai fait une recherche sur tout mon C:\ des fichiers *.txt et systématiquement j'en ai un qui plante :

En debug sous vb j'obtiens les valeurs suivantes lors de l'erreur

? MaxLenght
100
? FullPath
C:\WINDOWS\WinSxS\x86_Microsoft.Tools.VisualCPlusPlus.Runtime-Libraries.Resources_6595b64144ccf1df_6.0.0.0_fr-FR_9d8c4a39
? RootPath
C:
? FileName
x86_Microsoft.Tools.VisualCPlusPlus.Runtime-Libraries.Resources_6595b64144ccf1df_6.0.0.0_fr-FR_9d8c4a39

Et donc le InStrRev(RootPath, "") avec le C: et bien ça renvoit 0, je suis désolé de reproduire ce bug :( quand au exit do si on le fait pas la boucle est infini.

Voila pour les petits détails que je peux t'apporter.

++
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
7 oct. 2004 à 19:26
Heu.. je comprend pô comment tu peux avoir un InStrRev(RootPath, "") égal à 0... Car ya toujour au moins les deux "\" du lecteur disque !!! :o.

Ou alors, tas donné un chemin relatif avec des "..", non ?

Etpis, faire un "exit do", çà te donne un resultat cohérent ?
cs_intertek Messages postés 9 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 8 octobre 2004
7 oct. 2004 à 10:30
J'ai eu un bug en l'utilisant
J'ai eu un InStrRev(RootPath, "") égal à 0
J'ai corrigé de cette façon :
Do While ((Len(RootPath) + Len(FileName) + 5) > MaxLenght)
If InStrRev(RootPath, "") > 0 Then
RootPath = Left(RootPath, InStrRev(RootPath, "") - 1)
Else
Exit Do
End If
Loop

Sinon ça marche bien :)

++
jmlucienvb Messages postés 129 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 12 février 2009
7 oct. 2004 à 08:52
C'est mieux avec un petit exemple...
Bon d'accord peux pas tout faire...
Je vais essayer...
Rejoignez-nous