Page 1 sur 1

enlever un \ dans un nom de docier

Publié : sam. 26/juin/2004 12:05
par gansta93
Bonjour,

Je voudrais enlever le dernier \ d'un répertoir obtenu avec PathRequester()
Je voudrais que par exemple, C:\Programmes\ devienne C:\Programmes. Comment puis-je faire?
J'ai chercher avec du RemoveString() et plain d'autres choses dans l'aide pour les chaînes mais je n'ai rien trouvé qui pouvait m'aider.
Quelqu'un a-t-il une astuce pour me dire comment faire?

Merci d'avance

Publié : sam. 26/juin/2004 12:08
par Heis Spiter

Code : Tout sélectionner

fichier.s="C:\Programmes\"
lenfichier = Len(fichier)
If Right(fichier, 1) = "\"
  fichier=Left(fichier, lenfichier-1)
EndIf

Publié : sam. 26/juin/2004 12:14
par gansta93
Merci.
Je vais utiliser ce code qu'après avoir bien relu, je me dis que c'est logique en plus... je débute et ça se voit :-) encore merci.

Publié : sam. 26/juin/2004 12:28
par gansta93
Re,

Sinon quelqu'un sait comment je pourais faire un programme qui convertirait un nom long de répertoir en un nom court (avec les ~1) par exemple C:\Programmation PB en c:\Progra~1?

Merci d'avance.

Publié : sam. 26/juin/2004 12:39
par Backup

Code : Tout sélectionner

fichier$="salutcommentçava .doc"
longfichier = Len(fichier$)

If longfichier>8
   fichier$=Left(fichier$,6)+"~1.doc" 
EndIf

Debug fichier$
:D

Publié : sam. 26/juin/2004 12:55
par gansta93
OK. Mais... comment je fais pour par exemple salut comment ça va.doc?

Publié : sam. 26/juin/2004 13:27
par Dr. Dri
C'est bien plus comliqué que ca...
Déjà il faut virer les espaces, et ne pas ajouté à l'aveuglette un ~1 car ca pourrai etre 2 ou 5...

Dri

Publié : sam. 26/juin/2004 13:36
par fweil
C'est qq chose comme ça :

Code : Tout sélectionner

FileName.s = "C:\RECUP\PureBasic\Win32API\WIN32.HLP"
ShortName.s = Space(67)
GetShortPathName_(@FileName, @ShortName, 67)
Debug ShortName

Publié : sam. 26/juin/2004 13:59
par gansta93
fweil a écrit :C'est qq chose comme ça :

Code : Tout sélectionner

FileName.s = "C:\RECUP\PureBasic\Win32API\WIN32.HLP"
ShortName.s = Space(67)
GetShortPathName_(@FileName, @ShortName, 67)
Debug ShortName
Cela ne donne pas le répertoir en nom court, mais une suite d'espaces.
j'ai essayer de dire que le getshortpathname_() soit mis dans une variable string, mais il me l'a refusé. Cette fonction renvoi un nombre. ça ne me paraît pas logique.
Enfin bon... si quelqu'un a une idée... ça m'aiderais je ne trouve pas :(

Publié : sam. 26/juin/2004 14:17
par Backup

Code : Tout sélectionner

fichier$="salut comment ça va .doc"
longfichier = Len(fichier$)

If longfichier>8
    For t=1 To longfichier
    
        buf$=Mid(fichier$,t,1)
        If buf$=" ":buf$="":EndIf ; ceci vire les espaces
        fichier$=fichier$+buf$
    Next t
    Debug fichier$  ; la preuve
    
    fichier$=Left(fichier$,6)+"~1.doc"; veiller a ce qu'il n'y ai qu'un seul fichier ayant ce nom !!
    ; saut ver une procedure de verif !!
   
EndIf

Debug fichier$
c'est a peine plus complique !! :silly:

Publié : sam. 26/juin/2004 14:40
par Chris
gansta93 a écrit :
fweil a écrit :C'est qq chose comme ça :

Code : Tout sélectionner

FileName.s = "C:\RECUP\PureBasic\Win32API\WIN32.HLP"
ShortName.s = Space(67)
GetShortPathName_(@FileName, @ShortName, 67)
Debug ShortName
Cela ne donne pas le répertoir en nom court, mais une suite d'espaces.
j'ai essayer de dire que le getshortpathname_() soit mis dans une variable string, mais il me l'a refusé. Cette fonction renvoi un nombre. ça ne me paraît pas logique.
Enfin bon... si quelqu'un a une idée... ça m'aiderais je ne trouve pas :(
Il semble que, pour utiliser cette fonction, le répertoire doit se trouver effectivement sur le disque. C'est du moins ce qui se passe chez moi, sous XP.

La fonction ne retourne pas le repertoire, mais le nombre de caractères copiés dans le buffer. Le repertoire est retourné dans le buffer, (ShortName).

Essaye avec ce code, après avoir créé les dossiers sur le disque C, et ça te retournera les noms courts.

Code : Tout sélectionner

Fichier.s = "C:\Mon Premier Dossier\Mon Deuxieme Dossier\Mon Troisieme Dossier\Le Fichier qui est dans le troisieme dossier.txt" ; Créer d'abord ce repertoire
Buffer.s = Space(#MAX_PATH)

GetShortPathName_(Fichier,@Buffer,#MAX_PATH)

Debug Buffer

Chris :)

Publié : sam. 26/juin/2004 15:35
par fweil
La fonction GetShortPathName_() ne fonctionne qu'avec un chemin existant effectivement.

Publié : sam. 26/juin/2004 15:38
par gansta93
fweil a écrit :La fonction GetShortPathName_() ne fonctionne qu'avec un chemin existant effectivement.
Je reconfirme. J'ai pu grace à vous finire mon petit programme qui ne fait pas grand chose mais qui le fait bien!:-) encore merci de votre aide.