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

Pb pour accéder à des fichiers dont le nom est en unicode

4 réponses
Avatar
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

4 réponses

Avatar
Vincent Guichard
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
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 e ssayé
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
Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Exact. Merci de ta réponse.

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" a écrit dans le message de
news:4b1f7885$0$17515$
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
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



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
Avatar
Vincent Guichard
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Exact. Merci de ta réponse.

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, ByVa l
hTemplateFile As Long) As Long



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
Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Merci de ton feedback.

J'ai essayé : cela fonctionne bien avec les fichiers standards, mais pas
avec le fichier qui s'appelle :

. ♪ i-concerts.url

Christian


"Vincent Guichard" a écrit dans le message de
news:4b1fc386$0$934$
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Exact. Merci de ta réponse.

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



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