[UDF] ConsoleWrite et MsgBox simply
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.
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
[UDF] ConsoleWrite et MsgBox simply
Voici un petite librairie (UDF) que j’utilise tout le temps. Rien de bien métaphysique, elle est là juste pour nous me simplifier la vie.
Lorsque j’utilise la fonction ConsoleWrite,
99,99 fois sur 100 s’est en passant à la ligne et 99,99 fois sur 100, s’est pour examiner le contenu d’une variable. A force de prendre souvent les mêmes paramètres et la même mises en forme, _CW, _CW_Fmt, CW_NL et _CW_Sep sont nées.
_CW : utlisation simple de ConsoleWrite
_CW_Fmt : "Fmt" pour formatage, elle permet d’afficher des repères de longueur pour évaluer le format la longueur d’une variable et la position de certains caractères sans trop compter .
_CW_NL : affichage d'une nouvelle ligne blanche
_CW_Sep : affichage d'une ligne séparatrice
Pour les fonctions dérivées de MsgBox() à nouveau le même constat, toujours les mêmes paramètres suivant le contexte : Info, Error ou Warning. Ainsi sont nées _MB_Info, _MB_Error et _MB_Warning.
Quand à MB_IsOk, le même constat quelle réponse du point de vue logique nous intéresse dans une question proposant deux choix : d’accord ou pas d’accord et pas grand-chose d’autre (True or False).
Toutes vos remarques, suggestions et critiques constructives sont les biens venues.
Question pour les modérateurs du site :
Autoitscript.fr et Autoitscript.com sont de grandes sources d’inspiration et d’aide pour moi, où vaut-il mieux poster ce genre d’utilitaire ? A mon avis sur les deux. Mais lors de l’évolution de l’UDF, la duplicité des sources conduit systématiquement à des incohérences au cours des diverses versions.
Ou dois-je mettre la « Master référence »:-) ?
Lorsque j’utilise la fonction ConsoleWrite,
99,99 fois sur 100 s’est en passant à la ligne et 99,99 fois sur 100, s’est pour examiner le contenu d’une variable. A force de prendre souvent les mêmes paramètres et la même mises en forme, _CW, _CW_Fmt, CW_NL et _CW_Sep sont nées.
_CW : utlisation simple de ConsoleWrite
_CW_Fmt : "Fmt" pour formatage, elle permet d’afficher des repères de longueur pour évaluer le format la longueur d’une variable et la position de certains caractères sans trop compter .
_CW_NL : affichage d'une nouvelle ligne blanche
_CW_Sep : affichage d'une ligne séparatrice
Pour les fonctions dérivées de MsgBox() à nouveau le même constat, toujours les mêmes paramètres suivant le contexte : Info, Error ou Warning. Ainsi sont nées _MB_Info, _MB_Error et _MB_Warning.
Quand à MB_IsOk, le même constat quelle réponse du point de vue logique nous intéresse dans une question proposant deux choix : d’accord ou pas d’accord et pas grand-chose d’autre (True or False).
Toutes vos remarques, suggestions et critiques constructives sont les biens venues.
Question pour les modérateurs du site :
Autoitscript.fr et Autoitscript.com sont de grandes sources d’inspiration et d’aide pour moi, où vaut-il mieux poster ce genre d’utilitaire ? A mon avis sur les deux. Mais lors de l’évolution de l’UDF, la duplicité des sources conduit systématiquement à des incohérences au cours des diverses versions.
Ou dois-je mettre la « Master référence »:-) ?
Modifié en dernier par Jeep le ven. 08 févr. 2019 01:06, modifié 1 fois.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Déplacement dans "Fonctions et UDF" effectué
J'imagine qu'après les messages et les string, l'UDF suivant va porter sur les maths. Forcément. Suggestion :
J'imagine qu'après les messages et les string, l'UDF suivant va porter sur les maths. Forcément. Suggestion :
...
" 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 )
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Cher mikell,
Est-ce de l'humour ou une critique non constructive ? Auquel cas cher modérateur elle va a l'encontre des règles de votre site.
Pour ma première publication. Je trouve l'acceuil plutôt glacial.
Les paroles s'envolent et les écrits restent.
Est-ce de l'humour ou une critique non constructive ? Auquel cas cher modérateur elle va a l'encontre des règles de votre site.
Pour ma première publication. Je trouve l'acceuil plutôt glacial.
Les paroles s'envolent et les écrits restent.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Eh oui, c'est le problème quand on a plusieurs casquettes. Comment s'exprimer ?
En tant que modérateur, je n'ai pas de commentaire particulier. Chacun est libre de se servir d'AutoIt comme il l'entend, et de poster ce qu'il veut dans le cadre des règles du forum - règles que j'ai respectées d'ailleurs : pas de troll ni d'insultes, politesse, etc
En tant qu'utilisateur, personnellement je n'alourdirai pas mon script avec des fonctions dont pour beaucoup le seul but n'est que de faire économiser quelques secondes de clavier et/ou de remplacer une ou deux lignes de code "classique"
En tant qu'amoureux d'AutoIt, je pense que pour la créativité et la capacité à progresser il est infiniment préférable d'apprendre à utiliser correctement les opérateurs et les fonctions intégrées 'de base' avec leurs paramètres plutôt que d'utiliser du pré-mâché à usage restreint
En tant qu'assidu du forum US, j'ai remarqué que là-bas le staff se décarcasse pour essayer de faire comprendre aux gens que si on veut avancer, il faut mouiller le maillot. Faire un minimum d'efforts, quoi
Mais bon, tout ça reste bien sûr un avis personnel. Chacun a toute liberté d'utiliser s'il le souhaite une fonction _Add() plutôt que l'opérateur "+" , ou d'employer une ribambelle de fonctions _string* à usage unique plutôt que d'apprendre à utiliser StringRegExpReplace (qui offre tout de même un peu plus de perspectives)
En tant que modérateur, je n'ai pas de commentaire particulier. Chacun est libre de se servir d'AutoIt comme il l'entend, et de poster ce qu'il veut dans le cadre des règles du forum - règles que j'ai respectées d'ailleurs : pas de troll ni d'insultes, politesse, etc
En tant qu'utilisateur, personnellement je n'alourdirai pas mon script avec des fonctions dont pour beaucoup le seul but n'est que de faire économiser quelques secondes de clavier et/ou de remplacer une ou deux lignes de code "classique"
En tant qu'amoureux d'AutoIt, je pense que pour la créativité et la capacité à progresser il est infiniment préférable d'apprendre à utiliser correctement les opérateurs et les fonctions intégrées 'de base' avec leurs paramètres plutôt que d'utiliser du pré-mâché à usage restreint
En tant qu'assidu du forum US, j'ai remarqué que là-bas le staff se décarcasse pour essayer de faire comprendre aux gens que si on veut avancer, il faut mouiller le maillot. Faire un minimum d'efforts, quoi
Mais bon, tout ça reste bien sûr un avis personnel. Chacun a toute liberté d'utiliser s'il le souhaite une fonction _Add() plutôt que l'opérateur "+" , ou d'employer une ribambelle de fonctions _string* à usage unique plutôt que d'apprendre à utiliser StringRegExpReplace (qui offre tout de même un peu plus de perspectives)
" 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 )
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Au lieu de créer des fonctions, tu peux aussi utiliser les abréviations. Dans SciTE4AutoIt, va dans le menu Tools, puis SciTE Config > Other Tools > Run Abbrev Manager. Tu pourras voir celles qui existent déjà et en ajouter.
Par exemple, quand tu tapes
Par exemple, quand tu tapes
cw
suivi d'un espace, ça remplace cw
par ConsoleWrite( & @CRLF)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Bonjour Orax,
Merci pour la remarque sur les raccourcis SciAutoit, je connais un peu. Mais chaque fois que je change de PC. Mes raccourcis sont perdus.
D'autre part, cela devient un peu plus difficile avec la fonction _CW_Fmt qui fait un peu plus que ConsoleWrite.
Et pour les fonctions _MB_Info, MB_IsOk, ... () j'avoue être paresseux et être exaspéré de devoir rouvrir l'aide pour retrouver les constantes à utiliser avec MsgBox pour les icônes et les boutons (sans oublier l'include en début de scripte), donc j'ai écris de RIDICULES fonctions. Mais le ridicule ne tue pas.
D'autre part à chaque fois que je dois créer plus de deux fois le même traitement, je crée une fonction. Cela m'évite de réfléchir une troisième fois au même problème. Mais sans lire le code des fonctions (notamment des fonctions String proposées ailleurs JPD_String) la critique est aisée pour certains.
Merci pour la remarque sur les raccourcis SciAutoit, je connais un peu. Mais chaque fois que je change de PC. Mes raccourcis sont perdus.
D'autre part, cela devient un peu plus difficile avec la fonction _CW_Fmt qui fait un peu plus que ConsoleWrite.
Et pour les fonctions _MB_Info, MB_IsOk, ... () j'avoue être paresseux et être exaspéré de devoir rouvrir l'aide pour retrouver les constantes à utiliser avec MsgBox pour les icônes et les boutons (sans oublier l'include en début de scripte), donc j'ai écris de RIDICULES fonctions. Mais le ridicule ne tue pas.
D'autre part à chaque fois que je dois créer plus de deux fois le même traitement, je crée une fonction. Cela m'évite de réfléchir une troisième fois au même problème. Mais sans lire le code des fonctions (notamment des fonctions String proposées ailleurs JPD_String) la critique est aisée pour certains.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Tout le monde fait ça. Et moi le premier, sauf quand la fonction ne remplace qu'une seule ligne de code (ce qui est le cas pour un certain nombre de fonctions JPD_string) .à chaque fois que je dois créer plus de deux fois le même traitement, je crée une fonction.
Mais je ne peux pas laisser dire que j'ai posté sans lire l'UDF. Sur ce plan on peut me taxer de ce qu'on veut mais pas de malhonnêteté... j'ai été le premier à la télécharger
Commenter ces fonctions _string ça ferait un post assez long (parce qu'on doit prouver ce qu'on affirme), là pas le temps mais plus tard je peux développer : dans ce sujet ou dans le sujet concerné, ou alors par MP si vous préférez (histoire de ne pas trop polluer le topic), ou alors un mix des deux, pourquoi pas ?
" 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 )
- Tlem
- Site Admin
- Messages : 11776
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Bonjour Jeep.
Pour exemples :
ou encore :
Au lieu de prendre cela pour une attaque personnelle, vous auriez pu tout simplement admettre que vos UDFs sont totalement personnels et de par ce fait pas adaptés à un partage communautaire, car comment se souvenir de la syntaxe de vos commandes sans visualiser le corps de l'UDF.
Comment vais-je me souvenir que la fonction en usine à gaz :
Alors qu'avec SciTE4AutoIt un simple
Sans dénigrer votre travail personnel, en lisant le code de vos UDFs, on ne peux qu'en déduire que vous avez voulu réinventer la roue.
Si vous souhaitez réellement vous simplifier la vie, comme vous l'a suggéré Orax, vous devriez plutôt étudier la gestion des raccourcis de SciTE4AutoIt qui vous permettrons de réellement gagner du temps à la saisie. Les deux fichiers utilisés pour cela sont :
et se trouves dans le dossier :
Lors d'un changement de PC il vous suffira de sauvegarder et de mettre à jour les fichiers que vous aurez modifiés.
Comme vous le dites, le ridicule ne tue pas, mais il rend souvent les gens méchants ou agressifs (des deux cotés), ce qui n'a pas été le cas coté modération sur le forum Fr.
Edit : mikell à répondu pendent que je rédigeais mon message. Mais je pense avoir exprimé l'idée générale comme de quoi certaines fonctions nous paraissent ridicules aux vues de leur utilités.
mikell a écrit :J'imagine qu'après les messages et les string, l'UDF suivant va porter sur les maths. Forcément. Suggestion :Code : Tout sélectionner
Func _Add($a, $b) Return $a + $b EndFunc
La réaction de mikell ne me semble pas vraiment déplacée dans le sens ou en lisant le code de vos UDFs vous faites exactement ce que mickell à écrit !
Pour exemples :
Code : Tout sélectionner
Func _CW_NL()
ConsoleWrite(@CRLF)
EndFunc ;==>_CW_NL
Code : Tout sélectionner
Func _StringAppend($sInput, $sValue, $sDelim = "|")
If $sInput = "" Then $sDelim = ""
Return $sInput & $sDelim & $sValue
EndFunc ;==>_StringAppend
Comment vais-je me souvenir que la fonction
_CW_NL()
me retourne un retour chariot dans la console et donc de transformer un code simple du genre :
Code : Tout sélectionner
ConsoleWrite("Bonjour Paris" & @crlf & "Comment ça va ?" & @crlf )
Code : Tout sélectionner
ConsoleWrite("Bonjour Paris")
_CW_NL()
ConsoleWrite("Comment ça va ?"
_CW_NL()
cw + espace
fait la même chose que votre _CW_NL()
. ^^Sans dénigrer votre travail personnel, en lisant le code de vos UDFs, on ne peux qu'en déduire que vous avez voulu réinventer la roue.
Si vous souhaitez réellement vous simplifier la vie, comme vous l'a suggéré Orax, vous devriez plutôt étudier la gestion des raccourcis de SciTE4AutoIt qui vous permettrons de réellement gagner du temps à la saisie. Les deux fichiers utilisés pour cela sont :
Code : Tout sélectionner
au3abbrev.properties
au3UserAbbrev.properties
%USERSPROFILE%\AppData\Local\AutoIt v3\SciTE
Lors d'un changement de PC il vous suffira de sauvegarder et de mettre à jour les fichiers que vous aurez modifiés.
Comme vous le dites, le ridicule ne tue pas, mais il rend souvent les gens méchants ou agressifs (des deux cotés), ce qui n'a pas été le cas coté modération sur le forum Fr.
Edit : mikell à répondu pendent que je rédigeais mon message. Mais je pense avoir exprimé l'idée générale comme de quoi certaines fonctions nous paraissent ridicules aux vues de leur utilités.
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é".
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Bonjour Tlem et aussi Mikell,
Tlem votre réponse m'éclair beaucoup mieux sur votre soucis d'éviter les codes inutiles et sans une bonne valeur ajoutée, vos amis anglophone m'ont également fait la remarque de façon tout à fait aussi aimable. D'autre part, je vous remercie pour les informations sur la gestion des raccourcis.
Mikell votre réponse du style de la création de la fonction"Add", a éveillez chez moi une interprétation du style "Votre travaille est ridiculement ..., mettez le à la poubelle". Le renvoyer aux "Regex" et à l'étude d'Autoit mon fait dire, que vous n'aviez pas lu mon UDF sur les strings. Puisque que je les utilise parfois et que j'avais bien fait attention à proposer des fonctions qui n'existaient pas en standard dans Autoit (Donc j'avais du lire la doc). Je comprends bien que dans le feu de l'action on peu prendre des raccourcis, mais par écrits ce sera en principe lu. Restons en là, on n'en parle plus, la vie continue.
Pour les fonctions consoles, je les utilises depuis quelques dizaines d'années et quelques secondes par ci par la çà fait des heures et avec _CW_FMT j'ai souvent gagné plusieurs dizaine de minutes sur mes propres développements. Je pensais qu'elle pouvais aider et j'ignorais cette notion de fonction "Valuable for the community". Donc je propose de la retirer de la circulation. Y-a-il moyen de retirer la publication tout simplement ou j'efface le contenu de ma publication, mais cela laissera un message vide.
Pour la manipulation sur les strings, j'ai modifié l'UDF en tenant compte des remarques de nos amis anglophones et laissé les routines qui me semblaient apporter un plus.
Merci pour vos aides.
Tlem votre réponse m'éclair beaucoup mieux sur votre soucis d'éviter les codes inutiles et sans une bonne valeur ajoutée, vos amis anglophone m'ont également fait la remarque de façon tout à fait aussi aimable. D'autre part, je vous remercie pour les informations sur la gestion des raccourcis.
Mikell votre réponse du style de la création de la fonction"Add", a éveillez chez moi une interprétation du style "Votre travaille est ridiculement ..., mettez le à la poubelle". Le renvoyer aux "Regex" et à l'étude d'Autoit mon fait dire, que vous n'aviez pas lu mon UDF sur les strings. Puisque que je les utilise parfois et que j'avais bien fait attention à proposer des fonctions qui n'existaient pas en standard dans Autoit (Donc j'avais du lire la doc). Je comprends bien que dans le feu de l'action on peu prendre des raccourcis, mais par écrits ce sera en principe lu. Restons en là, on n'en parle plus, la vie continue.
Pour les fonctions consoles, je les utilises depuis quelques dizaines d'années et quelques secondes par ci par la çà fait des heures et avec _CW_FMT j'ai souvent gagné plusieurs dizaine de minutes sur mes propres développements. Je pensais qu'elle pouvais aider et j'ignorais cette notion de fonction "Valuable for the community". Donc je propose de la retirer de la circulation. Y-a-il moyen de retirer la publication tout simplement ou j'efface le contenu de ma publication, mais cela laissera un message vide.
Pour la manipulation sur les strings, j'ai modifié l'UDF en tenant compte des remarques de nos amis anglophones et laissé les routines qui me semblaient apporter un plus.
Merci pour vos aides.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
- Tlem
- Site Admin
- Messages : 11776
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Bonjour Jeep.Jeep a écrit :Y-a-il moyen de retirer la publication tout simplement ou j'efface le contenu de ma publication, mais cela laissera un message vide.
Vous pouvez à loisir supprimer vos messages, mais sachez qu'en ce qui nous concerne (l'équipe du forum), les seuls messages qui sont déplacés dans la zone 31 du forum, sont ceux qui ne présentent strictement aucun intérêt à la communauté de part leur nature injurieuse ou publicitaire, tous les autres messages tel que certains coups de gueule, boulettes ou autre messages que parfois on aimerais voir disparaitre, sont conservés pour ne pas oublier et pour montrer que chacun et libre de s'exprimer dans le respect des règles du forum.
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: [UDF] ConsoleWrite et MsgBox simply
Hmm. Je vois qu'apparemment je n'ai pas assez détaillé mon commentaire. Tâchons d'etre précis cette foisJeep a écrit :Mikell votre réponse du style de la création de la fonction"Add", a éveillez chez moi une interprétation du style "Votre travaille est ridiculement ..., mettez le à la poubelle". Le renvoyer aux "Regex" et à l'étude d'Autoit mon fait dire, que vous n'aviez pas lu mon UDF sur les strings. Puisque que je les utilise parfois et que j'avais bien fait attention à proposer des fonctions qui n'existaient pas en standard dans Autoit (Donc j'avais du lire la doc)
Exemple où une seule ligne de code (compréhensible par tous) est d'un meilleur usage :
_StringAppend => $txt &= (($txt = "") ? "" : "|") & $string
notez l'emploi de l'opérateur ternaire, très utile à connaître pour économiser des lignes
Exemple de réinvention de roue qui ne passe pas :
_StringJoinArray (_ArrayToString existe)
Exemple où il vaut mieux utiliser un regex (for educational purpose comme ils disent)
_StringIsStartingWith => StringRegExp($txt, '^\Q' & $string & '\E')
notez au passage
- la séquence
\Q...\E
qui remplace avantageusement une fonction __StringRegexLiteral- que comprendre le fonctionnement du bazar ouvre des perspectives :
Par exemple, si on remplace le pattern par :
'\Q' & $string & '\E$'
, surprise : on obtient _StringIsEndingWithEt si en plus on insère un \s* là où il faut, on peut s'abstraire d'espace(s) leading/trailing
... and much more
Et la liste ci-dessus n'est pas exhaustive
Cela fait un certain nombre de fonctions qui pourraient (devraient ?) être retirées du pack
Pour celles que vous souhaitez conserver, optimisez-les et surtout vérifiez-les !
Exemple :
C'est quand même dommage qu'il ait fallu que sur le forum US JLogan vous fasse les mêmes remarques (un poil plus diplomatiquement que Tlem, certes ) pour que vous ayez enfin pu accéder à un très sain sens des réalités
" 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 )
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Merci mikell,
Donc nous laisserons le sujet, il servira peut être au autres apprentis écrivain d'UDF sur comment aborder le contenu après en avoir appris la forme .
Donc nous laisserons le sujet, il servira peut être au autres apprentis écrivain d'UDF sur comment aborder le contenu après en avoir appris la forme .
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Merci Mikell pour tout ces éclaircissements.
Venant principalement de la branche "iif" et il y a très longtemps "?:" en C, je n'avais pas découvert l'opérateur ternaire en Autoit.
Donc dans mon prochain UDF hypothétique sur le calcul je vais pouvoir écrire les fonctions Min et Max. Horreur, elles esxistent déjà. , tout comme la fonction _ArrayToString(). A force de courir le nez dans le guidon "String", on ne regarde pas toujours plus loin.
L'opérateur de gestion des litéraux dans les Regex est certes un plus. Je vais les utiliser dans mes futures versions.
Quant à _StringIsDataType() j'étais certain qu'elle n'était pas "bullet proof" d'où mes précautions dans la présentation de la fonction et son placement dans les "internal use". Je vais la retirer et sas doute la proposer dans une discussion plus générale avant de la mettre peut-être dans un UDF.
Pas du tout, c'est l'aimable réponse de Tlem appuyé par la remarque de JLogan qui ont calmé ma première réaction et mon fait comprendre ce que vous attendiez d'un UDF de qualité.
En vous remerciant encore pour vos conseils.
Venant principalement de la branche "iif" et il y a très longtemps "?:" en C, je n'avais pas découvert l'opérateur ternaire en Autoit.
Donc dans mon prochain UDF hypothétique sur le calcul je vais pouvoir écrire les fonctions Min et Max. Horreur, elles esxistent déjà. , tout comme la fonction _ArrayToString(). A force de courir le nez dans le guidon "String", on ne regarde pas toujours plus loin.
L'opérateur de gestion des litéraux dans les Regex est certes un plus. Je vais les utiliser dans mes futures versions.
Quant à _StringIsDataType() j'étais certain qu'elle n'était pas "bullet proof" d'où mes précautions dans la présentation de la fonction et son placement dans les "internal use". Je vais la retirer et sas doute la proposer dans une discussion plus générale avant de la mettre peut-être dans un UDF.
C'est quand même dommage qu'il ait fallu que sur le forum US JLogan vous fasse les mêmes remarques (un poil plus diplomatiquement que Tlem, certes ) pour que vous ayez enfin pu accéder à un très sain sens des réalités
Pas du tout, c'est l'aimable réponse de Tlem appuyé par la remarque de JLogan qui ont calmé ma première réaction et mon fait comprendre ce que vous attendiez d'un UDF de qualité.
En vous remerciant encore pour vos conseils.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Pas de souci
NB : pour les UDF à venir, je préconise vivement de ne pas lésiner sur la documentation
Par exemple, pour valider une adresse email, un regex actuellement admis en accord avec la norme RFC 5322 est :
NB : pour les UDF à venir, je préconise vivement de ne pas lésiner sur la documentation
Par exemple, pour valider une adresse email, un regex actuellement admis en accord avec la norme RFC 5322 est :
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
" 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 )
-
- Niveau 1
- Messages : 14
- Enregistré le : jeu. 24 janv. 2019 16:34
- Localisation : Belgique
- Status : Hors ligne
Re: [UDF] ConsoleWrite et MsgBox simply
Bonjour Mikell,
Petite remarque sans grande importance : l'expression que vous reprenez dans votre message ne passe pas dans le petit outil Online que j'utilise de temps en temps Evaluation et examen d'expressions régulières.
Je propose même mieux pour valider les emails compatibles RFC822 :
Expression reprise dans la source suivante Discussion sur les expressions régulières..
Je suis du même avis que l'auteur, nous obtenons quelque chose qui fonctionne.
Mais le résultat est totalement illisible à mon niveau, donc gros problème pour la maintenance des applications.
La taille de l'expression 6,2kb, sans doute générée par une application, sous Autoit, nous obligerait à la décomposer en plus ou moins 60 lignes pour la visualiser dans SciTE.
Après quelques recherches. je dois admettre que valider une adresse Email ne semble pas être si trivial. Une bonne réflexion s'impose. Veut-on valider à 100% des adresses Email (expression ci dessus) ?
Veut-on s'assurer que l'utilisateur final n'a pas commis une erreur, en introduisant une autre infos que l'email demandé ? De toute façon une adresse Email syntaxiquement correcte, n'existe pas nécessairement.
Petite remarque sans grande importance : l'expression que vous reprenez dans votre message ne passe pas dans le petit outil Online que j'utilise de temps en temps Evaluation et examen d'expressions régulières.
Je propose même mieux pour valider les emails compatibles RFC822 :
Code : Tout sélectionner
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*))*)?;\s*)
Je suis du même avis que l'auteur, nous obtenons quelque chose qui fonctionne.
Mais le résultat est totalement illisible à mon niveau, donc gros problème pour la maintenance des applications.
La taille de l'expression 6,2kb, sans doute générée par une application, sous Autoit, nous obligerait à la décomposer en plus ou moins 60 lignes pour la visualiser dans SciTE.
Après quelques recherches. je dois admettre que valider une adresse Email ne semble pas être si trivial. Une bonne réflexion s'impose. Veut-on valider à 100% des adresses Email (expression ci dessus) ?
Veut-on s'assurer que l'utilisateur final n'a pas commis une erreur, en introduisant une autre infos que l'email demandé ? De toute façon une adresse Email syntaxiquement correcte, n'existe pas nécessairement.
Un problème complexe peut souvent se découper en problèmes simples. Mais où est la scie ?