Bonjour,
Je fais face à quelques problèmes de compatibilité entre certaines fonctions que je récupère sur le web et que je souhaiterais intégrer dans mon code.
Je n'ai jusque là jamais utilisé l'Unicode pour mes quelques applications de base.
Je connais donc les types classiques comme int, int*.., char, char*.., float (...)
Pour illustrer tout ça je vous propose le code que j'ai écrit ce matin, qui extrait d'un chemin complet, le chemin sans le fichier.
J'en ai d'autres des comme ça car ici je devais traiter des LPWSTR (WCHAR*?), mais après il y a aussi les CStringW
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 void getDirectoryNameFromFullPath(LPWSTR fullPath, LPWSTR DirPath) { int pos = 0; char* pch; // une conversion en char* (histoire de retomber sur mes pattes :) char converted[255]; char result[255]; int curA = 0; memset(converted, '\0', 255); WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, fullPath, -1, converted, 255, NULL, NULL); pch = strrchr(converted,'\\'); pos = (int)(pch-converted+1); //printf("\n'%s' contains last '/' on : '%d'", converted, pos); memset(result, '\0', 255); for (curA = 0; curA < pos-1; curA++) result[curA] = converted[curA]; //printf("\ndirpath = %s", result); // une conversion en LPWSTR???, histoire de récupérer le type imposé MultiByteToWideChar(CP_ACP, MB_COMPOSITE, result, -1, DirPath, 255); //wprintf(L"\ndirpath = %s", DirPath); }
Vous pouvez le constater, je ne suis pas à l'aise du tout avec ces concept, nouveaux pour moi.
Peut être sauriez vous m'orienter pour résorber ces lacunes?
Après de multiples recherches sur le web, à part bricoler des solution tordues à base de char*, je ne sais pas vraiment faire autrement.
Je vous remercie par avance pour vos suggestions.
Partager