GetShortPathNameW: probleme d'avec les accents ?

Le
ron
Bonjour, j'essaie d'utilise GetShortPathName ou GetShortPathNameW pour
récupérer un chemin de fichier au format Short.

J'ai fais plusieurs tests et je n'arrive pas à récuperer le format
short sur le chemin qui comporte des accents. Dans l'exemple ci
dessous seul le dossier "c:\userschristophe" fonctionne avec le
format unicode. Pouvez vous m'aider à trouver une solution ?
(J'utilise Mingw avec Qt c'est plus facile pour le format unicode.)

void main () {
WCHAR retour[2048];
QString path="c:\Users\tété";
int longueur=GetShortPathNameW((WCHAR *)path.utf16(),
retour,path.count()*2);
qDebug()<< longueur<< QString::fromUtf16((ushort *)
retour,longueur*1);

longueur=GetShortPathName((WCHAR *)path.toLatin1().data(), (WCHAR *)
retour,path.count());
qDebug()<< longueur<< QString::fromAscii((char *)retour,longueur);

path="c:\Users\Propriétaire";
longueur=GetShortPathNameW((WCHAR *)path.utf16(), retour,path.count()
*2);
qDebug()<< longueur<< QString::fromUtf16((ushort *)
retour,longueur*1);

longueur=GetShortPathName((WCHAR *)path.toAscii().data(), (WCHAR *)
retour,path.count());
qDebug()<< longueur<< QString::fromAscii((char *)retour,longueur);

path="c:\users\christophe";
longueur=GetShortPathNameW((WCHAR *)path.utf16(), retour,path.count()
*2);
qDebug()<< longueur<< QString::fromUtf16((ushort *)
retour,longueur*1);

longueur=GetShortPathName((WCHAR *)path.toLatin1().data(), (WCHAR *)
retour,path.count());
qDebug()<< longueur<< QString::fromAscii((char *)retour,longueur);
}
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #21117921
On 2 fév, 20:07, ron
Bonjour, j'essaie d'utilise GetShortPathName ou GetShortPathNameW pour
récupérer un chemin de fichier au format Short.

J'ai fais plusieurs tests et je n'arrive pas à récuperer le format
short sur le chemin qui comporte des accents. Dans l'exemple ci
dessous seul le dossier "c:\userschristophe" fonctionne avec le
format unicode. Pouvez vous m'aider à trouver une solution ?
(J'utilise Mingw avec Qt c'est plus facile pour le format unicode.)



Pas besoin de Qt sous Windows...
Avec VS, en Unicode, cela fonctionne normalement =>

WCHAR wsBuffer[MAX_PATH];
GetShortPathName(TEXT("C:\Users\Propriétaire"), wsBuffer, MAX_PATH);

=> j'obtiens bien : "C:UsersPROPRI~1"
ron
Le #21123191
En fait le programme s'exporte sous linux et sous mac :)
J'ai trouvé pourquoi ca fonctionnait pas. C'etait un soucis
d'initialisation de la variable de départ ou je devait mettre que
c'était de l'Utf8

Exemple: QString path=QString::fromUtf8("c:\Users\Propriétaire");

Merci pour l'exemple c'est ca qui m'a débloqué :).


On 3 fév, 13:09, Christian ASTOR
On 2 fév, 20:07, ron
> Bonjour, j'essaie d'utilise GetShortPathName ou GetShortPathNameW pour
> récupérer un chemin de fichier au format Short.

> J'ai fais plusieurs tests et je n'arrive pas à récuperer le format
> short sur le chemin qui comporte des accents. Dans l'exemple ci
> dessous seul le dossier "c:\userschristophe" fonctionne avec le
> format unicode. Pouvez vous m'aider à trouver une solution ?
> (J'utilise Mingw avec Qt c'est plus facile pour le format unicode.)

Pas besoin de Qt sous Windows...
Avec VS, en Unicode, cela fonctionne normalement =>

WCHAR wsBuffer[MAX_PATH];
GetShortPathName(TEXT("C:\Users\Propriétaire"), wsBuffer, MAX_PATH);

=> j'obtiens bien : "C:UsersPROPRI~1"


Publicité
Poster une réponse
Anonyme