enlever un \ dans un nom de docier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

enlever un \ dans un nom de docier

Message 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
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Code : Tout sélectionner

fichier.s="C:\Programmes\"
lenfichier = Len(fichier)
If Right(fichier, 1) = "\"
  fichier=Left(fichier, lenfichier-1)
EndIf
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

OK. Mais... comment je fais pour par exemple salut comment ça va.doc?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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 :(
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

La fonction GetShortPathName_() ne fonctionne qu'avec un chemin existant effectivement.
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Répondre