Gatto Francois a écrit :

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

Bonjour François

Merci pour aide rapide.

J'entrevois enfin la solution à mon problème. En fait l'instruction Input me semblait bien adaptée car je lis dans un fichier des enregistrements comprenant 6 champs bornés par des cotes et séparés par une virgule (Fichier csv) et je fais l'affectation à un tableau directement. Maintent, je vais lire les lignes complètes et les traiter avec l'instruction split avant l'affectation au tableau.

Je n'ai pas encore tester cette option faute de temps mais dès demain, je serai fixé.

Encore merci pour ton aide et j'espère dans un avenir proche être en mesure de dépanner à mon tour.

--
Thierry COLAS
Linux User 236286 - http://counter.li.org
Bravo et Merci à tous les contributeurs du LIBRE


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

Répondre à