| [memo] | |
|
|
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: [memo] Lun 29 Oct 2012 - 2:21 | |
| J' ai voulu récupéré le texte de plusieurs memo que j'ai placé dans des variables $ puis j'ai voulu créer une ligne i$ ( item d' un fichier type csv )en additionnant ces variables. Mais voilà que quand j'enregistre cette ligne i$ dans mon fichier, je me retrouve avec des retours charriot Quelqu'un a t il une astuce pour se débarrasser de ces retours charriot... | |
|
| |
Invité Invité
| Sujet: Re: [memo] Lun 29 Oct 2012 - 7:41 | |
| Là je peux te répondre. C'est le principe que j'utilise dans pagiciel pour sauvegarder les memos ou alpha en ligne. Lorsque tu veux récupérer les memos avec retour chariot, tu sauvegardes d'abord dans un fichier provisoire le memo avec file_save N, T. Puis tu effaces un variable tampon, disons d$ Ensuite tu relies le memo sous forme de fichier, car là tu ne lis pas les items mais chaque ligne complète avec les retours chariots. exemple pris dans pagiciel: - Code:
-
rem il faut d'abord sauvegarder le memo, pour relire le fichier et savoir où sont les retour-chariot file_save 352,dossier$ + "provisoir.txt" rem on relit chaque ligne d$="" file_open_read 1,dossier$ + "provisoir.txt" while file_eof(1) <> 1 file_readln 1,c$ d$ = d$ + c$ + "®" end_while file_close 1 c$ = left$(d$,len(d$)-1 ) :' on retire le dernier return Dans le cas suivant j'ai mis ® comme retour chariot, mais ça c'est pour le principe de mon programme. Normalement un retour chariot c'est chr$(10)+chr$(13) (je ne crois pas me tromper dans l'ordre.) A partir de maintenant tout le memo est dans la variable d$. La limite est faut faire le calcul dans les 65000. Tu t'amuseras à faire le calcul, je crois que c'est 65535 caractères avec les retours chariots. Tu devrais mettre un titre plus explicite, pour permettre plus tard à comprendre le but du post, et pouvoir s'en servir. |
|
| |
Invité Invité
| Sujet: Re: [memo] Lun 29 Oct 2012 - 8:11 | |
| J'y pense, tout dépend de ce que tu veux faire. J'ai un cas particulier, mais si tu veux juste relire un memo en respectant les sauts de lignes, tu mets au memo: bar_horizontal ou bar_both. Par contre je crois qu'une ligne ne dépasse pas 1024 caractères. |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 29 Oct 2012 - 15:12 | |
| @ cosmos70, Mon problème est l'inverse du tien je prends le memo, je le place dans une variable et ainsi de suite... puis je veux créer une ligne dans mon fichier Bdd qui soit l'addition de ces variable je fais donc : T$=i$(1)+"|"+i$(2)+"|"+i$(3)+...... que je sauvegarde dans ma mémoire temporaire ( dlist )en lieu et place de l'ancienne ligne je sauvegarde cette dlist dans un fichier ( *. ce que tu veux ) mais la ligne est sauvegardé comme suit : i$(1)+"|"+i$(2)+"|" +i$(3)+"|"+i$(4) alors que je veux : i$(1)+"|"+i$(2)+"|"+i$(3)+"|"+i$(4) ce qui me fait penser que je récupère un retour chariot depuis le memo et je cherche donc à m'en défaire... | |
|
| |
Invité Invité
| Sujet: Re: [memo] Lun 29 Oct 2012 - 15:58 | |
| Le principe est le suivant: Dans un texte disons de 50 lignes dans un memo, tu peux n'avoir qu'un, deux dix retours-chariots. Pour savoir où sont les retours-chariots, il n'y a qu'une possibilité; faire un file_save N,T. Dans le cas, où ceux-ci ne servent pas, alors tu prends ta ligne ou tes lignes, et tu sauvegarde ainsi: - Code:
-
file_open_write 1,nom$ file_writeln 1,ligne$ :' x fois si plusieurs lignes. file_close 1 Normalement je ne crois pas me tromper, mais la limite est aussi de 65535 caractères dans une ligne. Après il y a un retour chariot. Si tu charges après un memo en récupérant chaque ligne par file_readln, et que tu l'envoi dans un memo, les lignes vont s'accumuler dans le memo, et il n'y auras qu'un retour chariot pour cette ligne: Tu verras x lignes dans le memo, du contenu de la ligne additionnée, mais le retour chariot invisible, sera au bout de la dernière ligne. Je ne sais pas si je me suis fait comprendre. Disons que j'ai la ligne: "Au clair de la lune, mon ami Pierrot. Prêtes moi ta plume pour écrire un mot." et que tu récupères dans un memo cette ligne par item_add, tu verras ceci (les sauts de lignes en rapport avec la largeur du memo) - Citation :
- Au clair de la
lune, mon ami Pierrot. Prêtes ta plume pour écrire un mot.®® ®® représentant les retours chariots qu'on ne voit pas. Si tu as un memo que tu mets full_space dans une petite fenêtre. En déplaçant le bord droit de ta fenêtre, ta phrase va s'adapter à la largeur du memo qui suit cette fenêtre en tenant compte du retour chariot. A condition qu'il n'y ait pas de barre horizontale. Maintenant si tu récupères ta phrase dans un list, elle va être entière dans la ligne (si il n'y a pas de dépassement de capacité de caractères) |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 29 Oct 2012 - 16:04 | |
| Merci cosmos70 !
Je vais étudier çà de près...de très près. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [memo] Mar 30 Oct 2012 - 7:20 | |
| - ygeronimi a écrit:
- @ cosmos70,
[ ... ] T$=i$(1)+"|"+i$(2)+"|"+i$(3)+...... que je sauvegarde dans ma mémoire temporaire ( dlist )en lieu et place de l'ancienne ligne
je sauvegarde cette dlist dans un fichier ( *. ce que tu veux ) mais la ligne est sauvegardé comme suit :
i$(1)+"|"+i$(2)+"|" +i$(3)+"|"+i$(4)
alors que je veux :
i$(1)+"|"+i$(2)+"|"+i$(3)+"|"+i$(4)
ce qui me fait penser que je récupère un retour chariot depuis le memo et je cherche donc à m'en défaire... Pourquoi passer par une dlist alors ? Note: Que cela soit sauvegardé avec des retours chariot ne pose pas en soi de problème... Ce qu'il faut voir c'est : qu'est ce que tu as l'intention d'en faire de ton fichier ? Peut être qu'il faut voir du coté de l'utilisation de ce fichier... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 30 Oct 2012 - 14:29 | |
| @ Nardo26,
Je passe par une dlist pour une question de rapidité, les fonctions s'appliquent sur quelque chose déjà en mémoire. Donc je fais mes opérations sur la mémoire et je sauvegarde dans un fichier pour les futurs utilisations. Le fichier est une base de données qui est chargé en début de programme dans le dlist approprié qui est lu ligne par ligne donc chaque retour chariot provoque une erreur. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [memo] Mar 30 Oct 2012 - 17:47 | |
| J'ai peut être pas tout compris mais tu n'utilises pas ta dlist comme étant une simple chaine de caractère ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [memo] Mar 30 Oct 2012 - 18:12 | |
| Un exemple comment placer toutes les lignes d'un mémo dans une seule chaîne de caractères, avec un caractère de séparateur à la place des RETURN: - Code:
-
dim i%, sep$, chaine$ sep$ = ";" : ' juste un exemple de séparateur memo 1 : ' on charge dedans ce que l'on veut... ... ' constitution de la chaîne contenant tout: chaine$ = "" if count(1)>0 for i%=1 to count(1) if len(chaine$)=0 chaine$ = item_read$(1,i%) else chaine$ = chaine$ + sep$ + item_read$(1,i%) end_if end_if next i%
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 30 Oct 2012 - 18:47 | |
| @ Nardo26 si je place le contenu d'un memo dans une variable v$, que je répète l' opération sur plusieurs memo puis je rassemble le tout dans une variable comme ceci I$=v$(1)+"|"+v$(2)+"|"+v$(3)+"|"+v$(4)+"|"+v$(5) et que je place cette variable dans un dlist que je sauvegarde dans un fichier. Dans le dit fichier je verrai : v$(1)+"|"+v$(2)+"|"+v$(3) +"|"+v$(4)+"|"+v$(5) le problème est que mon fichier de sauvegarde n'a plus le bon format quand je recharge sur une autre utilisation, je vais avoir dans mon dlist v$(1)+"|"+v$(2)+"|"+v$(3) +"|"+v$(4)+"|"+v$(5) et ma fonction qui doit lire l'item lira : v$(1)+"|"+v$(2)+"|"+v$(3) et quand je vais voulloir redécouper mon item pour récupérer mes données 1 la fonction va me renvoyer une erreur si je fais une boucle for ou autre d' ailleurs 2 il va me manquer 2 données | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [memo] Mar 30 Oct 2012 - 18:56 | |
| Pourquoi passes-tu par une dlist ? Pourquoi tu ne fais pas simplement: - Code:
-
file_open_write 1,"monfichier.txt" file_writeln 1,I$ file_close 1 Tu le relis par: - Code:
-
file_open_read 1,"monfichier.txt" file_readln 1,I$ file_close 1 et ta variable sera complète. Une variable string (I$) peut être très longue (2**32-1 caractères). Tu ne la satureras pas. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 30 Oct 2012 - 19:08 | |
| @ Klaus, Le temps de réaction est plus long, il me semble. Je crois que c'est surtout que j'aime pas revenir en arrière je crée si le fichier n'existe pas, j'ouvre, je charge et après je ne fais plus que des sauvegardes. mais c'est vrai que les procédures ont fait évoluer les choses et que le nombre de lignes à écrire c'est considérablement réduit. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: [memo] Mar 30 Oct 2012 - 19:46 | |
| - ygeronimi a écrit:
- @ Klaus,
Le temps de réaction est plus long, il me semble. Je crois que c'est surtout que j'aime pas revenir en arrière je crée si le fichier n'existe pas, j'ouvre, je charge et après je ne fais plus que des sauvegardes.
mais c'est vrai que les procédures ont fait évoluer les choses et que le nombre de lignes à écrire c'est considérablement réduit. On est bien d'accord alors ? Le fait de passer par une chaine de caractères (ce que tu fais au final avec ta dlist) ne change rien avec ce que tu as écris plus haut... | |
|
| |
Contenu sponsorisé
| Sujet: Re: [memo] | |
| |
|
| |
| [memo] | |
|