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]