GetShortPathNameW: probleme d'avec les accents ?

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

J'ai fais plusieurs tests et je n'arrive pas rcuperer 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\tt";
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\Propritaire";
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);
}
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