Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

GetShortPathNameW: probleme d'avec les accents ?

2 réponses
Avatar
ron
Bonjour, j'essaie d'utilise GetShortPathName ou GetShortPathNameW pour
r=E9cup=E9rer un chemin de fichier au format Short.

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

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

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

path=3D"c:\\Users\\Propri=E9taire";
longueur=3DGetShortPathNameW((WCHAR *)path.utf16(), retour,path.count()
*2);
qDebug()<< longueur<< QString::fromUtf16((ushort *)
retour,longueur*1);

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

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

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

2 réponses

Avatar
Christian ASTOR
On 2 fév, 20:07, ron wrote:
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:UsersPropriétaire"), wsBuffer, MAX_PATH);

=> j'obtiens bien : "C:UsersPROPRI~1"
Avatar
ron
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:UsersPropriétaire");

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


On 3 fév, 13:09, Christian ASTOR wrote:
On 2 fév, 20:07, ron wrote:

> 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:UsersPropriétaire"), wsBuffer, MAX_PATH);

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