Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses
[Réglé] programme traitement de texte
Auteur Message
men94



Autorisation : Membre
Nb de messages : 4
Inscrit le : Lun 17 Déc 2012, 12:31
Posté le : Lun 17 Déc 2012, 12:33    

bonjour/bonsoir!

je suis entrain de programmer un programme de traitement de texte pour ti82stats.fr qui utilise les images de la calc.
j'ai besoin de votre aide si vous avez une idée pour faire un retour à la ligne quand il n'y a plus de place.

mon prog:

Code

:ClrHome:Input "CODE?",C
:If C=H
: Goto Θ:ClrHome
:Output(1,1,"
:Stop
:Lbl Θ
:ClrHome:Lbl M
:Menu("TEXTE","LIRE",L,"ECRIRE",E,"CHANGER MDP",G,"SUPPRIMER",S,"QUITTER",Q
:Lbl L
:ClrHome
:ClrDraw
:AxesOff
:CoordOff
:Input "RecallPic ?",F
:If F=0:RecallPic 0:If F=1:RecallPic 1:If F=2:RecallPic 2:If F=3:RecallPic 3:If F=4:RecallPic 4:If F=5:RecallPic 5:If F=6:RecallPic 6:If F=7:RecallPic 7:If F=8:RecallPic 8:If F=9:RecallPic 9:
:Pause
:Goto M
:Lbl E
:ClrDraw:AxesOff:CoordOff:FnOff :
:Input Str1
:Text(1,1,Str1:
:Pause
:Menu("SAVE","ENREGISTRER",1,"QUITTER",2
:Lbl 1
:Input "StorePic ?",L
:If L=0:StorePic 0:If L=1:StorePic 1:If L=3:StorePic 3:If L=4:StorePic 4:If L=5:StorePic 5:If L=6:StorePic 6:If L=7:StorePic 7:If L=8:StorePic 8:L=9:StorePic 9:Goto 2
:Lbl 2
:ClrDraw:ClrHome
:Goto M
:Lbl Q
:Output(1,1,"
:Stop
:End
:Lbl G
:Input "NOUVEAU CODE?",U
:U→H
:Goto M
:Lbl S
:ClrDraw
:Input "SUPPRIMER? ",W
:If W=0:DelVar Pic0:If W=1:DelVar Pic1:If W=2:DelVar Pic2:If W=3:DelVar Pic3:If W=4:DelVar Pic4:If W=5:DelVar Pic5:If W=6:DelVar Pic6:If W=7:DelVar Pic7:If W=8:DelVar Pic8:If W=9:DelVar Pic9
:Stop
:Goto M
:End




j'attend très vite vos réponses.

Merci. minied.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 17 Déc 2012, 15:10    

Il est impossible de forcer un retour à la ligne dans un unique Text(). Il faut plusieurs Text() ou une boucle.
Comme des caractères ont une largeur différente, on ne peut pas baser le découpage sur le nombre de caractères sans provoquer du vide sur la droite lorsque des caractères courts sont présents.
Pour pouvoir adapter ce découpage au mieux, il faudra soit effectuer une boucle et des calculs soit afficher les caractères un à un.

Au final il est préférable de découper le texte avec une boucle, la fonction sub()/sous-chaine() et un nombre de caractères prédéterminé.
Le maximum est 23 caractères car 95pixels/4pixel/caractère=23caractères

EDIT : Il y a aussi le programme TXT de Maxence sur Espace-TI.
On dirait qu'il ne l'a pas publié en dehors du TI-Concours car je ne le retrouve pas.

Ce sujet n'a pas de raison particulière d'être urgent, même si tu comptes t'en servir pour anti-sèche prochainement, puisque des programmes performants existent.
exemple https://tiplanet.org/forum/viewtopic.php?f=8&t=9361


----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Lun 17 Déc 2012, 16:34    

Il y a quand même besoin d'un câble TI-Ordi, pour zCreator. Ce qui est rare avec les 82 Stats.fr. angry.gif

Mais fais gaffe aux liens de TI-Planet! Tu vas te faire engueuler!

 Adresse email Haut de page Bas de page 
 
men94



Autorisation : Membre
Nb de messages : 4
Inscrit le : Lun 17 Déc 2012, 12:31
Posté le : Lun 17 Déc 2012, 17:01    

bonsoir,

Merci pour ta réponse rapide.

j'ai pas trop compris le système de "sous-chaîne" que tu as cité. est-ce que tu peux, stp, m'expliquer plus concrètement comment procéder.

Merci encore happy.gif

PS: je suis débutant minied.gif

 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Lun 17 Déc 2012, 18:50    

Pour une fois, nous disposons sur le site (!) d'un petit article qui montre brièvement l'utilisation des chaînes et de ses fonctions associées. winkle.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 17 Déc 2012, 18:55    

Il vaut mieux être débutant et persévérant que noob persistant.

Je ne retrouve pas le prog TXT de Maxence, il est en TI-Basic et très performant. (Espace-TI et TI-Concours)

Le résultat auquel je pense est ceci, à mettre à la place du simple Text(1,1,Str1).
Code
:length(Str1->L // longueur
:int(L/23)-1->M  // reste de division euclidienne de la longueur -1
:For(W,0,min(M,9   // parcourt les lignes, maximum 10
:Text(W6+1,2,sub(Str1,1+23W,23  // affiche la ligne W
:End
:If W<10 and L-23(M+1
:Text(W6+1,2,sub(Str1,23W,L-23W

Remarque que l'écran commence à zéro, ça peut servir. Ici je commence l'abscisse à 2 et l'ordonnée à 1 car il reste de la place à droite et en bas. C'est plus propre.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Lun 17 Déc 2012, 19:13    

Voici le topic Espace-TI de TXT, mais il me semble qu'il n'y a pas de lien de téléchargement. crazy.gif


Edit: j'ai contacté Maxence par MP et il m'a confié, après m'avoir confirmer qu'il n'y avait aucun lien de téléchargement, être en train de le recoder, puisque la première version comportait quelques bugs. Je tâcherais de vous informer. winkle.gif

 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Mer 19 Déc 2012, 19:54    

ALors voici le programme:

-lien de download: http://www.mediafire.com/?sh9cc8n3x4wf646

-Et le code:


Code
:0&#8594;&#7480;TXT(1
:If 1=dim(&#7480;TXT:Goto ST
:Lbl MN:ClrHome
:Menu(" (TXT...      ) ","(NOUVEAU)",NV,"(OUVRIR)",OV,"(RECEVOIR)",RV,"(QUITTER)",QT
:Lbl QT
:If 2=dim(&#7480;TXT:DelVar Str9DelVar &#7480;TXT
:DelVar Str0DelVar Str1
:Output(1,1,"
:Return
:Lbl RV
:Pause "(ENTER:RECEVOIR)
:Output(1,2,"RECEPTION... 
:"&#8594;Str0:0
:Repeat Ans=3 or length(Str0
:   GetCalc(Str0
:   Ans+1
:End
:ClrHome
:If 3=Ans:Menu("ECHEC RECEPTION ","(REESSAYER)",RV,"(RETOUR)",MN
:Str9+Str0&#8594;Str9
:augment(&#7480;TXT,{length(Str0&#8594;TXT
:Pause "(REUSSIE...    )
:Goto MN
:Lbl NV
:Disp "(TITRE...      )
:Input ":",Str0
:If Str0="ANNUL
:Goto MN
:Str9+sub(Str0+"             ",1,14&#8594;Str9
:   augment(&#7480;TXT,{0&#8594;TXT
:dim(Ans&#8594;A
:Repeat 1
:   Lbl EC
:   ClrHome
:   Input "("+sub(Str9,1+sum(&#7480;TXT,2,A-1),14)+")",Str0
:   sub(Str0+"               ",1,16iPart(1+(length(Str0)-1)/16&#8594;Str0
:   If A=dim(&#7480;TXT:Then
:      sub(Str9,1,14+sum(&#7480;TXT,2,A-1))+Ans&#8594;Str9
:   Else
:      sum(&#7480;TXT,2,A
:      sub(Str9,1,14+Ans-&#7480;TXT(A))+Str0+sub(Str9,1+Ans,length(Str9)-Ans&#8594;Str9
:   End
:   14+length(Str0&#8594;&#7480;TXT(A
:End
:Goto MN
:Lbl OV
:If 2=dim(&#7480;TXT:Menu("PAS DE TEXTE    ","(RETOUR)",MN
:3&#8594;A
:Lbl LT
:Repeat &#920;=105
:   getKey&#8594;&#920;
:   If &#920;=21:Goto MN
:   If &#920;=23:Goto S1
:   If &#920;=45:Goto ST
:   min(dim(&#7480;TXT),max(3,A+(&#920;=26)-(&#920;=24&#8594;A
:   Output(1,1,"("+sub(Str9,1+sum(&#7480;TXT,2,A-1),14)+")
:End
:Lbl OP:ClrHome
:sub(Str9,1+sum(&#7480;TXT,2,A-1),&#7480;TXT(A&#8594;Str0
:Menu("("+sub(Ans,1,14)+")","(LIRE)",LR,"(EDITER)",ED,"(RENOMMER)",RM,"(RETOUR)",LT
:Lbl ED
:sub(Ans,15,length(Ans)-14
:For(&#920;,&#8254;1,0
:   If &#920;:Goto EC
:End:Goto OP
:Lbl S1
:If 3=dim(&#7480;TXT:Goto ST
:If A=dim(&#7480;TXT:Then
:   sub(Str9,1,sum(&#7480;TXT,2,A-1&#8594;Str9
:Else
:   sum(&#7480;TXT,2,A
:   sub(Str9,1,Ans-&#7480;TXT(A))+sub(Str9,1+Ans,length(Str9)-Ans&#8594;Str9
:   For(&#920;,A+1,dim(&#7480;TXT
:      &#7480;TXT(&#920;&#8594;&#7480;TXT(&#920;-1
:   End:End
:dim(&#7480;TXT)-1&#8594;dim(&#7480;TXT
:End
:Lbl ST
:" &#8594;Str9
:{0,1&#8594;TXT
:Goto MN
:Lbl RM
:Disp "(ANCIEN NOM... )",":"+sub(Ans,1,14),"","(NOUVEAU NOM...)
:Input ":",Str0
:14+sum(&#7480;TXT,2,A-1
:sub(Str9,1,Ans-14)+sub(Str0+"             ",1,14)+sub(Str9,1+Ans,length(Str9)-Ans&#8594;Str9
:Goto OP
:Lbl LR
:sub(Ans,15,length(Ans)-14&#8594;Str0
:Ans&#8594;Str1
:min(128,length(Ans&#8594;C:1&#8594;B
:Repeat &#920;=21
:   getKey&#8594;&#920;
:   If &#920;=31:Then
:      ClrHome
:      Disp "(CHERCHER...   )
:      Input ":",Str1
:   End
:   If &#920;>70 and &#920;<103 and .1<fPart(&#920;/10) and .5>fPart(&#920;/10:Then
:      "("+sub("0123456789",1+&#920;-65-13iPart(&#920;/10-7)-(&#920;=102),1)+")&#8594;Str1
:      31&#8594;&#920;:End
:   If &#920;=31 or &#920;=105:Goto RC
:   16
:   B+Ans(&#920;=34)-Ans(&#920;=25)+8Ans(&#920;=26)-8Ans(&#920;=24&#8594;B
:   If B<1 or &#920;=11:1&#8594;B
:   length(Str0)-C+1
:   If B>Ans or &#920;=15:Ans&#8594;B
:   Output(1,1,sub(Str0,B,C
:End
:Goto OP
:Lbl RC
:inString(Str0,Str1,1+(B+15)(&#920;=105
:If Ans:1+16iPart((Ans-1)/16&#8594;B:End



 Adresse email Haut de page Bas de page 
 
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses





  Page générée en 6 requêtes