Salut tout le monde,
J'utilise un formulaire avec deux TEXTAREA nommés pour que l'utilisateur puisse copier coller un texte dans le premier.
Avec des procédures, je voudrais traiter le texte ligne par ligne et mettre le résultat dans le second TEXTAREA.
J'ai réussi à le faire, mais en prenant le texte au complet, le traiter et mettre le résultat final dans le second. Le soucis, c'est que si le texte est long, je me retrouve avec un "out of mémory"
Est t'il possible de prendre le texte ligne par ligne, traiter la ligne et l'ajouter à la suite puis recommencer ?
Merci de vos futures réponses :p
JLuc69
Lecture d'un TEXTAREA
Re: Lecture d'un TEXTAREA
Bonjour
Il serait interessant d'avoir le script complet.
Il doit y avoir un problème de boucles et de variables pour arriver à une saturation mémoire sur du texte.
Il serait interessant d'avoir le script complet.
Il doit y avoir un problème de boucles et de variables pour arriver à une saturation mémoire sur du texte.
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
Re: Lecture d'un TEXTAREA
Voici le script et le formulaire :
Code : Tout sélectionner
<script language="JavaScript">
function transformer() {
var programme=document.forms.formulaire.clair.value;
var reg=new RegExp("[\r\n]+");
var ligne=programme.split(reg);
//document.forms.formulaire.crypte.value=table[1];
for (var i=0; i<ligne.length; i++) {
if (ligne[i].length > 0) {
var reg1=/([A-Z]-?[0-9.0-9]+)/g;
var mots=ligne[i].match(reg1);
for (var j=0; j<mots.length; j++) {
var axe=mots[j].charAt(0);
var valeur = (mots[j].substring(1)*1);
if(axe=="X" || axe=="Y" || axe=="Z") {
var mot=axe + Math.round(valeur*1000)/1000 + " ";
}
else {
var mot=axe + valeur + " ";
}
document.forms.formulaire.crypte.value += mot;
}
}
document.forms.formulaire.crypte.value += "\r\n";
}
}
function vider_s() {
document.forms.formulaire.crypte.value = "";
}
function vider_e() {
document.forms.formulaire.clair.value = "";
}
</script>
<form name="formulaire">
<fieldset>
<table border=0 width=100%>
<tr>
<td width=40%>
<center>
Programme d'origine :<br />
<textarea name=clair rows=20 cols=60 wrap=virtual></textarea></center>
</td>
<td width=8%><center>
<input type="BUTTON" value="Vider l'entrée" onClick="vider_e()" name="BUTTON3" style="width: 100px;">
<input type="BUTTON" value="Transformer" onClick="transformer()" name="BUTTON4" style="width: 100px;">
<input type="BUTTON" value="Vider la sortie" onClick="vider_s()" name="BUTTON2" style="width: 100px;">
</center></td>
<td width=40%>
<center>
Programme transformé :<br />
<textarea name=crypte rows=20 cols=60 wrap=virtual></textarea></center>
</td>
</tr>
</table>
</fieldset>
</form>
Re: Lecture d'un TEXTAREA
Ok, pour que le script fonctionne, il faut des lignes en entrées du type
ABC-125
Mais je ne vois aucune transformation se faire
Il faudrait ajouter des exemples de texte d'entrée
ABC-125
Mais je ne vois aucune transformation se faire
Il faudrait ajouter des exemples de texte d'entrée
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
Re: Lecture d'un TEXTAREA
Si si, le texte est transformé dans le if :
if(axe=="X" || axe=="Y" || axe=="Z") {
var mot=axe + Math.round(valeur*1000)/1000 + " ";
}
else {
var mot=axe + valeur + " ";
}
document.forms.formulaire.crypte.value += mot;
Le texte, c'est pour un programme en G-Code.selon le logiciel de FAO utilisé, il arrive que les positions X, Y et Z aient une précision de 5 à 6 chiffres après la virgule. Du coup, je remets que 3 chiffres après la virgule avec ce script
Avant :
Après :
Si, de plus, je pouvais retiré les "0" en trop (Z-1.200 --> Z-1.2) ce serait parfait
Merci
if(axe=="X" || axe=="Y" || axe=="Z") {
var mot=axe + Math.round(valeur*1000)/1000 + " ";
}
else {
var mot=axe + valeur + " ";
}
document.forms.formulaire.crypte.value += mot;
Le texte, c'est pour un programme en G-Code.selon le logiciel de FAO utilisé, il arrive que les positions X, Y et Z aient une précision de 5 à 6 chiffres après la virgule. Du coup, je remets que 3 chiffres après la virgule avec ce script
Avant :
Code : Tout sélectionner
G1 X0.5952381 Y0.5952381 Z-1.2
G1 X1.190476 Y0.5952381 Z-1.2
G1 X1.190476 Y0.5952381 Z-1.24
G1 X2.380952 Y0.5952381 Z-1.24
Code : Tout sélectionner
G1 X0.595 Y0.595 Z-1.200
G1 X1.190 Y0.595 Z-1.200
G1 X1.190 Y0.595 Z-1.240
G1 X2.381 Y0.595 Z-1.240
Merci
Re: Lecture d'un TEXTAREA
Ok, je comprends mieux l'intérêt du script 
J'ai simplement modifié le fonctionnement et ajouté des affichages de données dans la console (https://www.toutjavascript.com/referenc ... onsole.php )
Il vaut mieux utiliser une variable temporaire pour traiter la chaîne de retour et l'affecter en fin de traitement au formulaire.
Je pense que c'est cette partie qui ralentissait le script
Le script est fonctionnel ici :
https://www.toutjavascript.com/user/textarea.html
Avec 6 lignes en entrée :
Fonction transformer(): 0.510009765625ms
textarea.html:28 Avec 6 lignes en entrée
textarea.html:30 Mémoire occupée : 10 000 000 octets
textarea.html:31 Mémoire occupée maximale : 10 000 000 octets
textarea.html:32 Mémoire disponible : 2 330 000 000 octets
Et avec un test en copiant plus de 100 000 lignes, le traitement se fait en moins d'une demi seconde :
Fonction transformer(): 282.31494140625ms
textarea.html:28 Avec 140251 lignes en entrée
textarea.html:30 Mémoire occupée : 10 000 000 octets
textarea.html:31 Mémoire occupée maximale : 10 000 000 octets
textarea.html:32 Mémoire disponible : 2 330 000 000 octets

J'ai simplement modifié le fonctionnement et ajouté des affichages de données dans la console (https://www.toutjavascript.com/referenc ... onsole.php )
Il vaut mieux utiliser une variable temporaire pour traiter la chaîne de retour et l'affecter en fin de traitement au formulaire.
Je pense que c'est cette partie qui ralentissait le script
Le script est fonctionnel ici :
https://www.toutjavascript.com/user/textarea.html
Avec 6 lignes en entrée :
Fonction transformer(): 0.510009765625ms
textarea.html:28 Avec 6 lignes en entrée
textarea.html:30 Mémoire occupée : 10 000 000 octets
textarea.html:31 Mémoire occupée maximale : 10 000 000 octets
textarea.html:32 Mémoire disponible : 2 330 000 000 octets
Et avec un test en copiant plus de 100 000 lignes, le traitement se fait en moins d'une demi seconde :
Fonction transformer(): 282.31494140625ms
textarea.html:28 Avec 140251 lignes en entrée
textarea.html:30 Mémoire occupée : 10 000 000 octets
textarea.html:31 Mémoire occupée maximale : 10 000 000 octets
textarea.html:32 Mémoire disponible : 2 330 000 000 octets
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
Re: Lecture d'un TEXTAREA
Splendide !
Merci de m'avoir enlevé une petite épine du pied :p
JLuc69
Merci de m'avoir enlevé une petite épine du pied :p
JLuc69