Pb pour accéder à des fichiers dont le nom est en unicode
Le
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax

J'utilise l'api createfile pour mesurer la taille de fichiers (au-delà de 4
Go).
Lorsque le nom du fichier comprend un caractère Unicode (. ♪ i-concerts),
alors l'api renvoie une erreur.
Comment faire pour qu'elle prenne les caractères Unicode ? (J'ai essayé avec
StrConv mais cela ne donne rien.
Christian
Go).
Lorsque le nom du fichier comprend un caractère Unicode (. ♪ i-concerts),
alors l'api renvoie une erreur.
Comment faire pour qu'elle prenne les caractères Unicode ? (J'ai essayé avec
StrConv mais cela ne donne rien.
Christian
Salut,
Je parierai que tu utilise la version ASCII (Ã moins que ce soit ANS I?)
de l'API (CreateFileA)? Essaye avec la version Unicode pour voir
(CreateFileW).
Vincent Guichard
Avec la version unicode, j'ai le même pb avec ce code :
FileH = CreateFile(StrConv(FullFilePath, vbUnicode), GENERIC_READ, 3, 0&, 3,
0, 0)
FileH = -1 chaque fois.
La déclaration que j'utilise :
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileW" (ByVal
lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As
Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As
Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As
Long
J'ai essayé aussi en mettant : StrConv(FullFilePath, vbUnicode) & vbNullChar
& vbNullChar : pas mieux
"Vincent Guichard" news:4b1f7885$0$17515$
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Salut,
Je parierai que tu utilise la version ASCII (à moins que ce soit ANSI?)
de l'API (CreateFileA)? Essaye avec la version Unicode pour voir
(CreateFileW).
Vincent Guichard
Pour les fonctions Unicode (finissant par W), il ne faut pas passer les
paramètres chaines 'As String' care Vb les transforme avant de les
passer à l'API. Il faut utiliser 'As Long' et StrPtr() pour passer
directement le pointeur de la chaine à l'API.
Essaie:
Private Declare Function CreateFileW Lib "kernel32" ( _
ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
FileH = CreateFile(StrPtr(FullFilePath), GENERIC_READ, 3, 0&, 3, 0, 0)
Vincent Guichard
J'ai essayé : cela fonctionne bien avec les fichiers standards, mais pas
avec le fichier qui s'appelle :
. ♪ i-concerts.url
Christian
"Vincent Guichard" news:4b1fc386$0$934$
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Pour les fonctions Unicode (finissant par W), il ne faut pas passer les
paramètres chaines 'As String' care Vb les transforme avant de les
passer à l'API. Il faut utiliser 'As Long' et StrPtr() pour passer
directement le pointeur de la chaine à l'API.
Essaie:
Private Declare Function CreateFileW Lib "kernel32" ( _
ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
FileH = CreateFile(StrPtr(FullFilePath), GENERIC_READ, 3, 0&, 3, 0, 0)
Vincent Guichard