Accueil > Forum > > > > conversion long filename vers short filename
conversion long filename vers short filename
jeudi 9 juillet 2009 à 16:44:48 |
conversion long filename vers short filename

yyyx
|
Bonjour, Bon, je sais que la question a été posée pas mal de fois, je cherche à convertir un nom de fichier long vers un nom de fichier court. Pas de problème, une source quasi universelle semble fonctionner (cf ci dessous) Mais, je ne sais pas pourquoi, chez moi, ca marche par exemple pour "C:\program files" mais pas pour un dossier créé du genre : "C:\Mes Documents\Fichier long.txt" ?? D'ailleurs, en mettant "fichier long.txt" dans program files, "program files" est bien converti, mais pas "fichier long.txt" qqn a une explication ?? Voici le code : Private Declare Function GetShortPathName Lib "kernel32" Alias _ "GetShortPathNameA" (ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
' Convert a long filename into the short 8.3 format ' if the file doesn't exist, return a null string
Function GetShortFileName(ByVal LongFileName As String) As String Dim buffer As String, length As Long ' Prepare the receiving buffer buffer = Space$(300) length = GetShortPathName(LongFileName, buffer, Len(buffer)) ' if return value was non-zero, estract the result ' else, it returns a null string (probably GetShortFileName = Left$(buffer, length) End Function
Merci d'avance au gentil programmeur qui se penchera sur mon cas
|
|
jeudi 9 juillet 2009 à 18:21:23 |
Re : conversion long filename vers short filename

jmf0
|
Bonjour,
Comment (valeur) passes-tu le paramètre LongFileName à ta fonction ? La ligne de code exacte, avec le nom de chemin complet exact.
|
|
jeudi 9 juillet 2009 à 20:58:23 |
Re : conversion long filename vers short filename

casy
|
Chez moi GetShortFileName ("C:\Program Files\Fichiers communs\Microsoft Shared\Windows Live\WindowsLiveLogin.dll") retourne bien C:\PROGRA~1\FICHIE~1\MICROS~1\WINDOW~1\WINDOW~1.DLL---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
vendredi 10 juillet 2009 à 05:31:40 |
Re : conversion long filename vers short filename

yyyx
|
Alors, voici le code complet de la mini appli test crée pour l'occasion (ce bug me semble bizarre quand même) Private Declare Function GetShortPathName Lib "kernel32" Alias _ "GetShortPathNameA" (ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
' Convert a long filename into the short 8.3 format ' if the file doesn't exist, return a null string
Function GetShortFileName(ByVal LongFileName As String) As String Dim buffer As String, length As Long ' Prepare the receiving buffer buffer = Space$(300) length = GetShortPathName(LongFileName, buffer, Len(buffer)) ' if return value was non-zero, estract the result ' else, it returns a null string (probably GetShortFileName = Left$(buffer, length) End Function
Private Sub Form_load() Me.AutoRedraw = True Dim pathTest As String pathTest = "C:\Program Files\Fichiers communs\Microsoft Shared\Web Folders\MSONSEXT.DLL" Me.Print pathTest Me.Print GetShortFileName(pathTest)
pathTest = "C:\Mes Documents\Long Name File.txt" Me.Print pathTest Me.Print GetShortFileName(pathTest) End Sub
Et voici la jolie fenêtre créée :

Nb : Je guarantis que les deux fichiers utilisés ci-dessus pour le test existent
|
|
vendredi 10 juillet 2009 à 08:56:41 |
Re : conversion long filename vers short filename

casy
|
Et alors ou est le problème ??????? MSONSEXT.DLL est déjà au format 8.3, son nom court est tout simplement égal à son nom long. Essaye sur un fichier qui n'est pas déjà au format 8.3 !!!!!!!!!! ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
vendredi 10 juillet 2009 à 09:02:22 |
Re : conversion long filename vers short filename

casy
|
Oupsss désolé j'avais pas vu le second fichier Es-tu sur que le dossier C:\Mes Documents existe ??????? Sous XP normalement le dossier virtuel Mes documents pointe vers le dossier physique C:\Documents and Settings\<user>\Mes documents Et en utilisant le bon dossier ça marche sans problème ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
vendredi 10 juillet 2009 à 14:43:17 |
Re : conversion long filename vers short filename

yyyx
|
J'ai créé un dossier "Mes Documents" pour le test, il aurait pu s'appeler "Un Dossier Au Nom Relou" si j'avais voulu. D'ailleurs, si le fichier n'existe pas, il me semble que l'api retourne une chaine vide ? Le truc, c'est que seuls les fichiers indexés par le système semblent être convertis. Par exemple, en placant un dossier au nom long sur le bureau, seule la partie prévue par windows dans l'arborescence est convertie. Par exemple : C:\Documents and Settings\laurent.KOSVOCORE\Bureau\chant claire\enregistrement 1.wav Devient : C:\DOCUME~1\LAUREN~1.KOS\Bureau\chant claire\enregistrement 1.wav
Mon problème, c'est que la fonction qui récupère le tout après transformation n'accepte pas les espaces dans les noms de fichiers, mais choppe sans pb les noms courts. Mais bon, si windaube et son api à 2 balle continuent comme ca, je pense que je vais chercher comment faire la suite autrement.
|
|
samedi 11 juillet 2009 à 15:16:18 |
Re : conversion long filename vers short filename

PCPT
|
salut,
l'api ne retourne rien si le fichier n'existe pas, exact
fichier n'existe pas => j'ai 3 lignes (normal) fichier existe : 4e ligne = C:\MESDOC~1\LONGNA~1.TXT
peux-tu préciser ton OS?? (apparemment XP mais soyons sûr) avec l'architecture exacte (32 ou 64bits?)
|
|
samedi 11 juillet 2009 à 15:36:55 |
Re : conversion long filename vers short filename

yyyx
|
Déjà, merci à vous tous qui vous penchez sur mon PB : je suis sous XP sp2 32 bits Par contre, j'utilise la version LSD  , pas forcément légale, je ne suis donc pas à jour et ceci est peut-être un bug connu corrigé dans l'un des nombreux correctifs. Le pire étant que mon école me donne accès à MSDN, mais j'ai pas encore eu le courage de formater, et ça dure depuis 2 ans quand même... ( Sinon, félicitation, bientôt ton 10 000 è message sur vbfrance, Joyeux Anniversaire  )
|
|
samedi 11 juillet 2009 à 16:01:55 |
Re : conversion long filename vers short filename

PCPT
|
sur support.microsoft.com, le bug se rapprochant le plus est un problème d'enregistrement COM avec le nom long çà ne nous aide pas trop, mis à part que le bug est résolu par le SP3 de VB6
je suis aussi tombé sur un article similaire à ton bug, mais spécifique à NT4. ta version d'XP, bien que non corrigée, est du NT5. logiquement aucun lien donc
la meilleure piste pour le moment reste donc le SP6 de VB6, est-il installé? http://logiciel.codes-sources.com/logiciels/Service-Pack-pour-Visual-Basic-6-0---SP-144.aspx
(ah oui tiens. beh bientôt merci alors )
|
|
Cette discussion est classée dans : fichier, buffer, long, string, filename
Répondre à ce message
Sujets en rapport avec ce message
Telechargement SUR de fichier [ par quantum59 ]
Bonjour,Dans mon code, j'ai utilisé une fonction qui telecharge un fichier texte.Le problème, c'est que ma fonction n'est pas sur car il arrive parfoi
Impression ou sauvegarde fichier via vb excel [ par silverdark1984 ]
Bonjour a tous Voila mon probleme...J'ai des fichiers dans un dossier, en .pdf ( 1 ou plusieurs pages ) et j'aimerai avoir chaques feuilles dans un f
Installer un fichier [ par Sinsitrus ]
Salut à tous ! J'ai supprimé l'extension d'un fichier .msi Dans mon appli VB6 j'ai ceci : [code=vb]Private Declare Function ShellExecute Lib "shell32
Cryptage [ par YannGotti ]
Code source de 3 fonctions:Private Function WriteBinaryInformations(FileName As String, Text As String)If Not Len(Text) = 1020 Then If Len(Text)
Comment utiliser ce code?? [ par programmationniste ]
salut je suis un débutant quelqu'un peut me dire comment utiliser ce code (trouvé sur codes sources) pour imprimer un fichier ' APIs + Const Priva
Déclaration sous VB.NET - Galère buffer !! [ par COlive ]
Voila, j'ai la fonction suivante : Public Sub Connect()V_Busy = True<
lancer un fichier par le shell [ par coquille100 ]
je veux pouvoir exécuté un fichier a partir de ca (le but complet est assez compliké ne me demandé pas l'interet c trop long a expliqer) je me suis
Problème impression [ par guitooo ]
Salut!Je voudrais imprimer un fichier Word depuis une application que j'ai crée en VB6.Ne sachant pas le faire j'ai cherché sur le forum et j'ai trouv
Enregistrer dans un fichier INI [ par piep14 ]
Bonjour, j'aimerais écrire dans un fichier INI. Jj'ai donc trouvé dans la FAQ la méthode a appliquer mais je n'arrive pas à l'utiliser !!! J'ai fai
[excel] Envoie fichier ouvert par ftp [ par didrocks ]
Bonjour tout le monde!J'aimerais qu'à chaque enregistrement de mon fichier excel (enregistré dans un répertoire temporaire), celui-ci s'envoie par ftp
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|