Le forum (ô combien francophone) des utilisateurs de Powerbuilder.




Bonjour,
j'écris dans un fichier des chaines de caractères que je lui insère une par une, je dois, à un moment, le faire passer à la ligne.
Le caractère ascii pour faire cette action est 13 mais je ne sais pas comment passer ce paramètre dans le filewrite.
Merci pour votre aide.
Dernière modification par julien (08-12-2009 11:12:02)
Hors ligne














Bonjour, Char(13) ou ~n
(voire en plus un Char(10) ou ~r)
Hors ligne




voilà mon code :
li_fichier = fileopen(ls_server + ls_nouvfichier + ".txt", StreamMode!, Write!, LockReadWrite!, Append!, EncodingANSI!) DO WHILE ll_nb <= lds_cheque.rowcount() DO WHILE li_colone <= 39 ls_colone = lds_cheque.getitemstring(ll_nb, li_colone) filewrite(li_fichier, ls_colone) li_colone = li_colone + 1 LOOP filewrite(li_fichier, char(10)) li_colone = 1 ll_nb = ll_nb + 1 LOOP
Ca m'insère bien le caractère ascii, le soucis et que lorsque que j'ouvre mon fichier texte, le caractère ascii est remplacé par un carré et le retour à la ligne n'est pas visible (dans le bloc note)
Y a t-il une solution pour remédier à ce problème ?
Hors ligne
essayes char(13) + char(10), ou inversement char(10) + char(13)
A+++

Hors ligne






Bonjour,
Pour passer à la ligne suivante, il faut faire appliquer le CRLF :
CR : carriage return => retour chariot
LF : Line feed => saut de ligne
La ligne d'un fichier doit donc se terminer : ~r~n.
(Nos réponses se sont croisées, mais cela doit revenir au même)
Hors ligne




Cool merci ca fonctionne !
Pourquoi il faut mettre les deux ?
Hors ligne






Lorsque que tu es dans un éditeur de texte tu frappes la touche entrée pour passer à la ligne suivante.
Ce n'est pas un caractère, mais deux caractères qui sont insérés, le fameux CRLF (carriage return - line feed).
La terminaison de ligne des fichiers textes sous unix est différente.
C'est pour cela qu'ils nécessitent d'être convertis lorsque tu passes d'un système à l'autre.
Hors ligne




ok ! Merci pour ces explications !
Maintenant, je me heurte à un autre problème:
Pourquoi, lorsque l'on passe une chaine de caractères dans un filewrite, les espaces en fin de chaine sont supprimés ?
Par exemple si je fais : filewrite(li_fichier, "test "), dans le fichier je trouve "test".
Hors ligne






Bonjour,
Tu crées des fichiers textes avec le "fileopen" que tu montres dans l'exemple : StreamMode!. Le StreamMode! concerne la création de fichiers binaires, de plus dans ce mode l'encodage est ignoré :
When you create a new binary file using stream mode, the encoding parameter, if provided, is ignored.
Pour ton cas, l'utilisation du mode TextMode! me paraît plus adapté.
Hors ligne




J'ai trouvé une autre solution, je rajoute les espaces en ascii à la fin
Hors ligne