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]