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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vincent Guichard
Le #20726931
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
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Le #20728901
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" 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
Vincent Guichard
Le #20729291
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
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Le #20729551
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" 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
Publicité
Poster une réponse
Anonyme