Thierry COLAS wrote:
Bonjour à tous,

Je suis débutant en programmation OOo et c'est mon premier post.
Je me heurte à un problème d'affichage des caratères accentués dans une boîte de dialogue. J'ai testé OOo 1.1.4 et 2.0 sur plate-forme linux et windows avec le même résultat. Voici un petit morceau de code qui met en évidence (enfin chez moi) le problème.

Sub Main
 Dim sFile As String
 Dim sRecord As String
 Dim iFP As Integer
 sFile = "/tmp/monfichier.datas"
 iFP = FreeFile
 Open sFile For Output As #iFP
 Write #iFP, "azertyuiopéèçàîûïü123"  'Ecriture correcte dans le fichier
 Close #iFP
 iFP = FreeFile
 Open sFile For Input As #iFP
 Input #iFP, sRecord
 Close #iFP
 MsgBox sRecord 'Affichage incorrect dans la boîte de dialogue
End Sub

Un éditeur de texte montre que le fichier est écrit correctement.
Lorsque l'on recopie un textfield possédant des caratères accentués vers un autre textfield, pas de souci.
Par contre si la source des données est un fichier, ça ne marche pas.

Quelqu'un a-t-il dèjà été confronté à ce pb ?

Merci d'avance pour votre aide.

Remplace la séquence de lecture Input #iFP, sRecord

par Line Input #iFP, sRecord

qui récupère les données textuelles ligne à ligne séparées par
- un CR ( retour chariot / Carriage Return = code 13 ) ou
- un LF ( retour à la ligne / Line Feed [new line] = code 10 )

L'avantage du Line Input permet de gérer les chaines contenant des guillemets et des virgules. L'inconvénient c'est qu'elles sont bornées par des quotes; mais que l'on gèrera par prog.

Regardes ton exemple ci-dessous que j'ai adapté pour la circonstance :

Sub ProblemeAccents
        Dim sFile As String, sRecord As String, sChaineLue As String
        Dim iFP As Integer
        
        sFile = "/tmp/monfichier.datas"
        iFP = FreeFile
        
        Open sFile For Output As #iFP
        
                Write #iFP, "les caractères, accentés ou pas, sont lus."
                Write #iFP, "azertyuiopéèçàîûïü123"
                Write #iFP, "Les nombres :"
                Write #iFP, "Nombre 1 = 1234,56"
                Write #iFP, "Nombre 2 = 1 234,56"
                Write #iFP, "Nombre 3 = 1.234,56"
                Write #iFP, "Nombre 4 = 1,234.56"
                Write #iFP, "Fin d'enregistrement."
                'Ecriture dans le fichier terminée
        
        Close #iFP
        
        iFP = FreeFile
        sRecord = ""
        
        Open sFile For Input As #iFP
        
                'on boucle jusqu'à la fin du fichier
                
                While not eof(#iFP)
                
                        Line Input #iFP, sChaineLue
                        print sChaineLue
                        sRecord = sRecord & chr(13) & sChaineLue
                
                Wend
        
        
        Close #iFP
        
        MsgBox sRecord 'Affichage des données
        
End Sub

--
François Gatto

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à