J'ai des problèmes de conversion d'ANSI en Unicode et vice versa. Le code suivant décrit ce que je fais. Je reçois 0x57 erreurs ..WideCharToMultiByte dans QB64
DECLARE DYNAMIC LIBRARY "kernel32"
FUNCTION MultiByteToWideChar& (codePage~&, dwFlags~&, lpszMbstring$, byteCount&, lpwszWcstring$, wideCount&)
FUNCTION WideCharToMultiByte& (codePage~&, dwFlags~&, lpWideString$, BYVAL ccWideChar%, lpMultiByte$, BYVAL multibyte%, BYVAL defaultchar&, BYVAL usedchar&)
FUNCTION GetLastError&()
END DECLARE
DIM Filename AS STRING * 260, NewFilename AS STRING * 260, MultiByte AS STRING * 260
PRINT "Enter filename";: INPUT Filename$: 'Filename$ = Filename$ + CHR$(0)
x = MultiByteToWideChar(0, 0, Filename$, LEN(Filename$), NewFilename$, 260)
IF x = 0 THEN
PRINT "Error 0x"; HEX$(GetLastError)
ELSE
PRINT "Processing: "; NewFilename$
END IF
' do unicode stuff here
x = WideCharToMultiByte(65001, 0, NewFilename$, LEN(NewFilename$), MultiByte$, 0, 0, 0)
' display processed filename
IF x = 0 THEN
PRINT "Error 0x"; HEX$(GetLastError)
ELSE
PRINT MultiByte$
END IF
Ok, merci encore. Cela devrait à peu près le faire pendant un certain temps que je rassemble tout le code. – eoredson
BTW: Pourquoi FindFirstFileW retourne .cAlternateFilename comme NUL? – eoredson
Les docs indiquent qu'un nom de fichier au format DOS 8.3 sera dans 'cAlternateFilename' sauf si' cFilename' est déjà un nom de fichier 8.3, auquel cas 'cAlternateFilename' est une chaîne vide. Par exemple, 'foo.txt' résulterait en un membre' cAlternateFilename' vide alors que 'HelloWorld.txt' et' foo.config' pourraient donner 'HelloW ~ 1.txt' et' foo ~ 7.con'. –