lgn
Messages postés5Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention 9 juillet 2007
-
9 juil. 2007 à 12:26
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
9 juil. 2007 à 20:53
Bonjour,
J'utilise Visual Basic 6 et je dois faire un programme permettant de lire un fichier.
J'ai fait :
Open sFileName For Input As #1
While (Not EOF(1))
Line Input #1, sLigneLue
MsgBox(sLigneLue)
Wend
Close #1
Mon problème est qu'a la place des accents, j'ai n'importe quoi.
D'après ce que j'ai vu, je crois comprendre que c'est un problème entre ASCII et UTL-8.
Est ce que quelqu'un à la solution en mon problème.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 juil. 2007 à 12:56
Salut
Essaye de voir si cela peut venir d'un problème OEM-ASCII.
Je te colle une petite fonction de notre ami EBartSoft permettant de convertir une chaine de l'un vers l'autre et réciproquement.
On l'utilise simplement, par exemple dans ton cas, après le "Line Input" :
sLigneLue = OEMConvert(sLigneLue, oemASCIItoANSI)
La fonction (à coller dans un module, par exemple):
Public Function OEMConvert(ByRef Text As String, ByVal ConvertMode As OEMStringTypeConstants) As String
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 juil. 2007 à 15:15
Re
En réalité, tu aurais dû avoir un problème pour exécuter ce code puisqu'il t'en manque un bout à mettre dans la partie Déclaration du Module :
Public Enum OEMStringTypeConstants
oemANSItoASCII
oemASCIItoANSI
End Enum
Alors explique comment tu as pu le faire fonctionner ? c'est bizarre
Surtout, supprime bien toutes les gestions d'erreur du style "On Error Resume Next" qui peuvent masquer ce genre de problème. (Menu Outils, Options, onglet Général et case à cocher "Arrêt sur toutes les erreurs"
C'est très important quand on débugue une application.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 juil. 2007 à 20:28
Re
Ok, en fait oemANSItoASCII vaut 0 ou 1, mais ton True / False peut aussi marcher.
Est-ce que tes chaines originales auraient un caratère bizarre entre chaque lettre ?
Si c'est le cas, c'est parce que tu lis des caractères codés sur deux octets ... je ne rappelle plus le nom de ce type de caractères .... reflechissement Jean-Pierre ... DBCF (ouf) ou Unicode
Il faudrait regarder les fonctions avec un 'B' genre : ChrB, InputB ...
Dans l'aide de VB6, il y a deux chapitres consacrés :
"Traitement des fichiers utilisant les caractères à deux octets"
"Problèmes spécifiques au jeu de caractères à deux octets"
que tu retrouves si tu cherches le mot Unicode.
Sinon, essaye de nous copier/coller un exemple de quelques caractères bizarres et l'équivalence souhaitée.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés