[R] Récupérer Retours Chariots d'un edit
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Récupérer Retours Chariots d'un edit
Bonjour et tous mes voeux de bonne et heureuse année 2014 à toute l'équipe du forum, en particulier à ceux ou celles qui prennent de leur temps pour dépanner les amateurs comme moi.
Je souhaite récupérer le contenu d'un Edit, y compris les retours chariot, pour impression ultérieure. Est-ce possible directement, sans enregistrer préalablement le contenu dans un fichier, puis lire ce fichier ligne par ligne ?
Je vous remercie de vos conseils.
Je souhaite récupérer le contenu d'un Edit, y compris les retours chariot, pour impression ultérieure. Est-ce possible directement, sans enregistrer préalablement le contenu dans un fichier, puis lire ce fichier ligne par ligne ?
Je vous remercie de vos conseils.
Modifié en dernier par aulus le sam. 04 janv. 2014 11:59, modifié 1 fois.
Re: [..] récupérer Retours Chariots d'un edit
Comme ça ?
Code : Tout sélectionner
$text = GUIctrlRead($myEdit)
$aText = StringRegExp($text, "(?m)^(.*)$", 3)
For $i = 0 To UBound($aText) - 1
MsgBox(0, "", "Line " & $i + 1 & " : " & $aText[$i] )
NextLe script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] récupérer Retours Chariots d'un edit
C'est exactement ce que j'espérais... Divines expressions régulières, quand vous soumettrez-vous à ma médiocre intelligence ?
Grand merci Jguinch.
Grand merci Jguinch.
Re: [..] récupérer Retours Chariots d'un edit
Libre à toi d'apprendre, c'est pas si compliqué...
En plus, il n'y avait pas forcément besoin d'un expression régulière, on aurait pu utiliser StringSplit :
$aText = StringSplit($text, chr(13))
N'oublie pas de passer ton sujet en [R]
En plus, il n'y avait pas forcément besoin d'un expression régulière, on aurait pu utiliser StringSplit :
$aText = StringSplit($text, chr(13))
N'oublie pas de passer ton sujet en [R]
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
Le problème avec
est que la scission s'effectue exclusivement sur le caractère spécifié (CR).
Du coup, si la chaîne comprend plusieurs lignes "à la Microsoft" (délimitées par CRLF), on se retrouve avec des LF en tête des chaînes intermédiaires (donc pas toutes), qui pourront perturber un traitement individuel. Certes tel n'est pas le cas ici, mais ma remarque porte sur un cas plus général.
Découper avec CRLF ne fonctionnera pas avec une chaîne utilisant CR ou LF seul.
En fait, une regexp ave \R marche dans tous les cas, du moins avec la dernière version, car ses regexps utilisent par défaut (*ANYCRLF).
Code : Tout sélectionner
$aText = StringSplit($text, chr(13))Du coup, si la chaîne comprend plusieurs lignes "à la Microsoft" (délimitées par CRLF), on se retrouve avec des LF en tête des chaînes intermédiaires (donc pas toutes), qui pourront perturber un traitement individuel. Certes tel n'est pas le cas ici, mais ma remarque porte sur un cas plus général.
Découper avec CRLF ne fonctionnera pas avec une chaîne utilisant CR ou LF seul.
En fait, une regexp ave \R marche dans tous les cas, du moins avec la dernière version, car ses regexps utilisent par défaut (*ANYCRLF).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [R] Récupérer Retours Chariots d'un edit
J'ai opté pour l'expression régulière. Merci pour ces précisions qu'il est bon de connaître.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
En effet !
Parce que si tu veux récupérer aussi les lignes vides (d'espacement entre 2 paragraphes, par exemple) il faut adapter le regex de jguinchou appliquer le conseil de jchd
Parce que si tu veux récupérer aussi les lignes vides (d'espacement entre 2 paragraphes, par exemple) il faut adapter le regex de jguinch
Code : Tout sélectionner
StringRegExp($text, '(?m)^(.+|\s+)$', 3)Code : Tout sélectionner
StringRegExp($text, '(*BSR_ANYCRLF)(.*)\R|\z', 3)" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
Oui, j'ai pris un raccourci saisissant. Je voulais dire que (*BSR_ANYCRLF) est actif par défaut maintenant, de même que (*ANYCRLF).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [R] Récupérer Retours Chariots d'un edit
@mikell : j'ai essayé tes propositions, mais je ne comprends pas trop le comportement :
- avec StringRegExp($text, '(?m)^(.+|\s+)$', 3), il n'y a pas tous les retours à la ligne
- avec StringRegExp($text, '(*BSR_ANYCRLF)(.*)\R|\z', 3), il n'y a pas le contenu de la dernière ligne.
Si par contre on fait StringRegExp($text, '(.*)(?:\R|\z)', 3), c'est OK mais le résultat retourne une ligne vide à la fin.
C'est peut-être du pas grand chose, mais j'aime bien essayer de comprendre (mais là...)
A+
- avec StringRegExp($text, '(?m)^(.+|\s+)$', 3), il n'y a pas tous les retours à la ligne
- avec StringRegExp($text, '(*BSR_ANYCRLF)(.*)\R|\z', 3), il n'y a pas le contenu de la dernière ligne.
Si par contre on fait StringRegExp($text, '(.*)(?:\R|\z)', 3), c'est OK mais le résultat retourne une ligne vide à la fin.
C'est peut-être du pas grand chose, mais j'aime bien essayer de comprendre (mais là...)
A+
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
Oui c'est assez tordu, le résultat dépend de ce qu'on teste et de la présence ou non d'une dernière ligne vide (ou plusieurs)
Je me suis penché là-dessus quand j'ai vu dans un post de guiness sur le forum US que Notepad++ donnait $GUI_WS_EX_PARENTDRAG à la ligne 99 dans l'include GuiConstantsEx alors que Scite le donne à la ligne 97, or je me suis fait un petit script de recherche de constante dans les includes qui doit me retourner un n° de ligne juste
J'ai donc fait les tests sur des includesMais je n'ai pas testé un GuiCtrlRead d'edit
Je me suis penché là-dessus quand j'ai vu dans un post de guiness sur le forum US que Notepad++ donnait $GUI_WS_EX_PARENTDRAG à la ligne 99 dans l'include GuiConstantsEx alors que Scite le donne à la ligne 97, or je me suis fait un petit script de recherche de constante dans les includes qui doit me retourner un n° de ligne juste
J'ai donc fait les tests sur des includes
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Récupérer Retours Chariots d'un edit
L'expression de Jguinch - $aText = StringRegExp($text, "(?m)^(.*)$", 3) - récupère les lignes vides.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
Oh oui... d'ailleurs avec le test sur WindowsConstants.au3 elle en récupère même 48 en rab ^^
Et avec '(*BSR_ANYCRLF)(.*)\R?' on a la ligne vide en trop
Oui, quand le texte lu n'a pas de \R à la dernière ligne, c'est ça que je pige pas, \z devrait marcherjguinch a écrit :avec StringRegExp($text, '(*BSR_ANYCRLF)(.*)\R|\z', 3), il n'y a pas le contenu de la dernière ligne.
Et avec '(*BSR_ANYCRLF)(.*)\R?' on a la ligne vide en trop
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Récupérer Retours Chariots d'un edit
J'ai résolu le pb avec StringStripWS(GUICtrlRead($Edit1),3)mikell a écrit :Oh oui... d'ailleurs avec le test sur WindowsConstants.au3 elle en récupère même 48 en rab ^^
-
lesolutionneur
- Niveau 7

- Messages : 368
- Enregistré le : ven. 09 déc. 2011 11:25
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
Ils me semble que les expressions régulières sont largement plus lentes que les fonctions natives comme StringSplit().
Attention pour les très long textes !
Attention pour les très long textes !
Modifié en dernier par lesolutionneur le mar. 07 janv. 2014 13:24, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
@lesolutionneur
Vous devriez tester avant d'avancer certaines choses.
Chez moi, sur un fichier de 75mo, StringRegExp() met une seconde de moins que StringSplit() pour me donner le résultat !
Vous devriez tester avant d'avancer certaines choses.
Chez moi, sur un fichier de 75mo, StringRegExp() met une seconde de moins que StringSplit() pour me donner le résultat !
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
@aulus
L'expression dédouble toutes les lignes vides du texte, le problème ne peut pas être résolu par un simple StringStripWS(...,3)
@lesolutionneur
Je serais curieux de savoir comment fonctionne le moteur de StringSplit...
Et il y a certainement une raison au fait que beaucoup d'UDF intégrées soient réécrites avec des regex
Exemple (puisque c'est pile dans le sujet et que je transpire dessus en ce moment) :
L'expression dédouble toutes les lignes vides du texte, le problème ne peut pas être résolu par un simple StringStripWS(...,3)
@lesolutionneur
Je serais curieux de savoir comment fonctionne le moteur de StringSplit...
Et il y a certainement une raison au fait que beaucoup d'UDF intégrées soient réécrites avec des regex
Exemple (puisque c'est pile dans le sujet et que je transpire dessus en ce moment) :
► Afficher le texte_FileCountLines ancienne version
► Afficher le texte_FileCountLines nouvelle version
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
lesolutionneur
- Niveau 7

- Messages : 368
- Enregistré le : ven. 09 déc. 2011 11:25
- Status : Hors ligne
Re: [R] Récupérer Retours Chariots d'un edit
C'est pour ça que j'ai utilisé "il me semble". Dans tous les langages dignes de ce nom, ça fonctionne ainsi. Alors pourquoi l'AutoIt ne respecte pas cette règle ? Pour la même raison que les autres inconvénients qui le placent derrière les autres langages.

