begin process at 2008 08 22 01:27:36
1 229 733 membres
5 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lire dans un fichier texte en prenant en compte les accents [ Système / Fichier & Disque ] (Tioneb)

Lire dans un fichier texte en prenant en compte les accents le 02/07/2008 14:09:22

Tioneb
Salut,
Je suis en train de développer un petit programme pour le jeu Company of Heroes. Ce programme va gérer les cartes que les joueurs téléchargent. Ces cartes sont composées de plusieurs fichiers dont un fichier texte (ex: macarte.info) qui contient les informations relative à la carte associée. Voici un exemple de fichier:

HeaderInfo = 
{
    scenarioname = "Ben_2 collines (4)",
    scenariodescription = "Carte créée par BenoitFR59",
    maxplayers = 4,
    date = "05/11/2007 20:34",
    scenarioabbrname = "",
    savedname = "",
    version = 2002,
    mapsize = 
    {
        640,
        352,
    },
    music = "",
    scenariotype = 2,
    modname = "RelicCOH",
}

Une des fonctions de mon programme sera de donner les infos de la carte quand l'utilisateur cliquera dessus dans une liste. Pour récupérer ce qui m'intéresse, j'ouvre le fichier en mode "input", je récupère l'ensemble du contenu (du fichier) dans une variable et j'isole ce que je veux. Mon problème est le suivant: Quand j'affiche les infos, je n'ai pas les caractères accentués. Les "é" sont remplacés par des "é". J'ai cherché un peu sur le site et la fonction StrConv(MonString, vbUnicode) me retourne seulement le 1er caractère de la chaine!!! Et je voudrais éviter de devoir programmer l'ensemble des caractères accentués (surtout que mon prog est multilangue donc je sais pas si le problème sera présent dans un autre pays...)

Merci d'avance

--------------------------------------------------------------------------
Visitez mon site sur [ Lien ]
(Sur le jeu Company of Heroes pour PC)

Re : Lire dans un fichier texte en prenant en compte les accents le 02/07/2008 15:13:28

jack
(Admin CS)

Salut
Ce doit être un problème de conversion OEM.
Essaye ça dans un module :
Partie déclaration
   Public Enum eOEMStringTypeConversion
       [ANSI to ASCII]
       [ASCII to ANSI]
   End Enum
   Private sASCI As String
   Private sANSI As String

Sub InitOEM
    ' Constantes de conversion ASCII <> ANSI
    sASCI = Chr$(132) & Chr$(148) & Chr$(129) & Chr$(225) & Chr$(142) & Chr$(153) & Chr$(154) & Chr$(128) & Chr$(130) & Chr$(131) & Chr$(133) & Chr$(134) & Chr$(135) & Chr$(136) & Chr$(137) & Chr$(138) & Chr$(139) & Chr$(140) & Chr$(143) & Chr$(144) & Chr$(147) & Chr$(150) & Chr$(151) & Chr$(20) & Chr$(145) & Chr$(146) & Chr$(155) & Chr$(156) & Chr$(166) & Chr$(167) & Chr$(171) & Chr$(172) & Chr$(237) & Chr$(241) & Chr$(246) & Chr$(253) & Chr$(21) & Chr$(157)
    sANSI = Chr$(228) & Chr$(246) & Chr$(252) & Chr$(223) & Chr$(196) & Chr$(214) & Chr$(220) & Chr$(199) & Chr$(233) & Chr$(226) & Chr$(224) & Chr$(229) & Chr$(231) & Chr$(234) & Chr$(235) & Chr$(232) & Chr$(239) & Chr$(238) & Chr$(197) & Chr$(201) & Chr$(244) & Chr$(251) & Chr$(249) & Chr$(182) & Chr$(230) & Chr$(198) & Chr$(162) & Chr$(163) & Chr$(170) & Chr$(186) & Chr$(189) & Chr$(188) & Chr$(216) & Chr$(177) & Chr$(247) & Chr$(178) & Chr$(167) & Chr$(165)
End Sub

Public Function OEMConvert(ByRef Texte As String, _
                                                      ByVal ConvertMode As eOEMStringTypeConversion) As String
    ' Vient de source de EBartSoft :
http://www.vbfrance.com/code.aspx?ID=39592
    Dim Src  As String
    Dim dest As String
    Dim r    As Long
    Dim Pos  As Long
   
    OEMConvert = Texte
   
    ' sASCI et sANSI sont renseignés dans InitOEM
    If (ConvertMode = [ANSI to ASCII]) Then
        Src = sANSI
        dest = sASCI
    Else
        Src = sASCI
        dest = sANSI
    End If
   
    For r = 1 To Len(Src)
        Do
            Pos = InStr(OEMConvert, Mid$(Src, r, 1))
            If (Pos = 0) Then Exit Do
            Mid$(OEMConvert, Pos, 1) = Mid$(dest, r, 1)
        Loop
    Next
End Function

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés


Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)


Re : Lire dans un fichier texte en prenant en compte les accents le 02/07/2008 15:25:06

Tioneb
Je te remerci pour ta réponse rapide. Mais le problème persiste. En fait dès qu'on lit dans le fichier, les caractères accentués sont remplacés par 2 autres caractères. Je pense qu'il faudrait dire à VB qu'on veut utiliser une table de caractère différente de celle par défaut. Reste à savoir si c'est possible et si oui, laquelle utiliser!

--------------------------------------------------------------------------
Visitez mon site sur [ Lien ]
(Sur le jeu Company of Heroes pour PC)


Classé sous : fichier, programme, texte, lire, carte

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS