[R] Faire référence aux fichiers include "complémentaires"
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.
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
[R] Faire référence aux fichiers include "complémentaires"
Bonjour à toutes les stars du forum!
J'ai beau enregistrer mes nouvelles UDF dans la liste des fonctions d'autoit, sous
"C:\Program Files\AutoIt3\Include"...Impossible d'y faire référence par la suite depuis l'éditeur SCITE.
Je peux uniquement citer les fonctions déjà prévues dans la version AutoIt téléchargée sur le net.
Quel dommage!
En plus, je vois que certaines fonctions paraissent de couleur bleues, et d'autres fonctions,
paraissent de couleur noire dans l'éditeur.
Est ce que tout cela est normal?
J'ai beau enregistrer mes nouvelles UDF dans la liste des fonctions d'autoit, sous
"C:\Program Files\AutoIt3\Include"...Impossible d'y faire référence par la suite depuis l'éditeur SCITE.
Je peux uniquement citer les fonctions déjà prévues dans la version AutoIt téléchargée sur le net.
Quel dommage!
En plus, je vois que certaines fonctions paraissent de couleur bleues, et d'autres fonctions,
paraissent de couleur noire dans l'éditeur.
Est ce que tout cela est normal?
Modifié en dernier par martinbrait le mar. 24 mai 2011 14:42, modifié 5 fois.
Re: [..] Faire référence aux fichiers include "complémentaires"
Bonjour.
Aucune question n'est honteuse, tout le monde commence un jour.
Je vais commencer par ce qui est des couleurs des fonctions, il y a 3 possibilités, mais retenez bien que ceci est auxiliaire, on en a un peu rien a faire des couleurs, c'est juste un aide-mémoire, que les fonctions soient bleu-foncé, bleu-clair, ou noires, rien ne change dans leur mode de fonctionnement.
Par exemple, vos couleurs peuvent etre changées, c'est Scite4Autoit qui les définit, selon un format décidé par les developpeurs d'Autoit. Un autre éditeur, comme Notepad++ peut tout a fait ne pas avoir la même coloration syntaxique.
Donc, dans Scite4Autoit, le bleu est réservé pour les fonctions de bases, dont le code source n'est pas disponible, et qui sont intégrées à Autoit3.exe, c'est à dire que si vous les utilisez, vous n'avez besoin de rien, Autoit3.exe les comprend directement.
Le bleu clair est lui destiné à ce qu'on appelle les UDF, c'est à dire les fonctions qui ont été codés par des membres mais qui sont inclus dans le package Autoit pour faciliter la vie. Par exemple, _ArrayDisplay() ne sert a rien en tant que tel, elle est juste la pour du debuggage, pour simplifier la vie du developpeur.
Le noir est défini pour les autres fonctions, que Scite4Autoit ne reconnait pas. Cependant, vous pouvez, si vous utilisez une fonction très frequemment, tout a fait l'inclure dans Scite4Autoit pour qu'il la reconnaisse et qu'il la mette en bleu clair, avec l'autocomplétion et tous les avantages associés.
Un UDF est une bibliotheque de fonctions, qu'on inclut avec #Include et qui permet d'associer pleins de fonctions déjà ecrites a notre programme. Si cet UDF est déjà reconnu par Scite4Autoit, les fonctions qu'il comprend seront bleu clair, mais si cet UDF est personnel, comme FF.au3 par exemple, les fonctions seront en noirs.
Donc si vous mettez votre UDF personnel dans le dossier que vous citez, vous pourrez bien l'inclure et utiliser les fonctions, meme si Scite4Autoit ne les met pas en bleu.
Si vous souhaitez obtenir des informations sur le parametrage de Scite4Autoit pour rajouter la coloration a ses propres fonctions, n'hesitez pas à demander.
Aucune question n'est honteuse, tout le monde commence un jour.
Je vais commencer par ce qui est des couleurs des fonctions, il y a 3 possibilités, mais retenez bien que ceci est auxiliaire, on en a un peu rien a faire des couleurs, c'est juste un aide-mémoire, que les fonctions soient bleu-foncé, bleu-clair, ou noires, rien ne change dans leur mode de fonctionnement.
Par exemple, vos couleurs peuvent etre changées, c'est Scite4Autoit qui les définit, selon un format décidé par les developpeurs d'Autoit. Un autre éditeur, comme Notepad++ peut tout a fait ne pas avoir la même coloration syntaxique.
Code : Tout sélectionner
StringInStr()
_ArrayDisplay()
_ma_fonction_codee_par_timmalos()Le bleu clair est lui destiné à ce qu'on appelle les UDF, c'est à dire les fonctions qui ont été codés par des membres mais qui sont inclus dans le package Autoit pour faciliter la vie. Par exemple, _ArrayDisplay() ne sert a rien en tant que tel, elle est juste la pour du debuggage, pour simplifier la vie du developpeur.
Le noir est défini pour les autres fonctions, que Scite4Autoit ne reconnait pas. Cependant, vous pouvez, si vous utilisez une fonction très frequemment, tout a fait l'inclure dans Scite4Autoit pour qu'il la reconnaisse et qu'il la mette en bleu clair, avec l'autocomplétion et tous les avantages associés.
Un UDF est une bibliotheque de fonctions, qu'on inclut avec #Include et qui permet d'associer pleins de fonctions déjà ecrites a notre programme. Si cet UDF est déjà reconnu par Scite4Autoit, les fonctions qu'il comprend seront bleu clair, mais si cet UDF est personnel, comme FF.au3 par exemple, les fonctions seront en noirs.
Donc si vous mettez votre UDF personnel dans le dossier que vous citez, vous pourrez bien l'inclure et utiliser les fonctions, meme si Scite4Autoit ne les met pas en bleu.
Si vous souhaitez obtenir des informations sur le parametrage de Scite4Autoit pour rajouter la coloration a ses propres fonctions, n'hesitez pas à demander.
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
Merci beaucoup pour votre réponse tellement rapide! C'est génial!
Vous venez d'évoquer ceci:
vous pouvez, si vous utilisez une fonction très frequemment, tout a fait l'inclure dans Scite4Autoit pour qu'il la reconnaisse
et qu'il la mette en bleu clair, avec l'autocomplétion et tous les avantages associés.
J'adorerai le faire, cependant pour l'instant, j'irais à tâton, car je n'ai aucune idée de la façon dont on peut faire cela.
D'ailleurs, je ne saurais jamais "mettre en bleu clair" mes fonctions, car je ne comprends pas encore clairement,
si il s'agit d'un comportement d'autoit à changer, où d'une couleur de police de caractère à choisir lorsque
je rédige ma fonction dans un éditeur.
Quant aux commentaires que je peux voir dans l'autocomplétion sur mon éditeur, d'où viennent ils exactement?
Où puis-je trouver la porte secrète dans les fichiers d'autoit?
Bref, grosse galère en perspective sans une petite démo vidéo!
Allez, je pars mettre mes mains dans le cambouis et j'arrête de quémander!
Vous venez d'évoquer ceci:
vous pouvez, si vous utilisez une fonction très frequemment, tout a fait l'inclure dans Scite4Autoit pour qu'il la reconnaisse
et qu'il la mette en bleu clair, avec l'autocomplétion et tous les avantages associés.
J'adorerai le faire, cependant pour l'instant, j'irais à tâton, car je n'ai aucune idée de la façon dont on peut faire cela.
D'ailleurs, je ne saurais jamais "mettre en bleu clair" mes fonctions, car je ne comprends pas encore clairement,
si il s'agit d'un comportement d'autoit à changer, où d'une couleur de police de caractère à choisir lorsque
je rédige ma fonction dans un éditeur.
Quant aux commentaires que je peux voir dans l'autocomplétion sur mon éditeur, d'où viennent ils exactement?
Où puis-je trouver la porte secrète dans les fichiers d'autoit?
Bref, grosse galère en perspective sans une petite démo vidéo!
Allez, je pars mettre mes mains dans le cambouis et j'arrête de quémander!
Re: [..] Faire référence aux fichiers include "complémentaires"
Vous touchez maintenant tout ce qui se rapporte à Scite4Autoit et non Autoit3.
Pour changer la couleur d'une fonction dans Scite4Autoit, allez dans
Options puis au3.keywords.properties.
Vous avez alors une liste de fonctions, ce sont celles en bleu foncé, puis vous avez 'au3.keywords.udfs=' il vous suffit de rajouter le nom de votre fonction dans cette liste pour la voir apparaitre en bleu clair.
Pour l'autocomplétion, je vous conseille vivement de lire ce tutoriel que vous auriez trouvé avec un peu de recherche sur le forum.
http://autoitscript.fr/forum/viewtopic.php?f=11&t=2302
C'est bien cela, Autoit est totalement étranger, c'est uniquement l'editeur qui change de couleur.car je ne comprends pas encore clairement,
si il s'agit d'un comportement d'autoit à changer, où d'une couleur de police de caractère à choisir lorsque
je rédige ma fonction dans un éditeur.
Pour changer la couleur d'une fonction dans Scite4Autoit, allez dans
Options puis au3.keywords.properties.
Vous avez alors une liste de fonctions, ce sont celles en bleu foncé, puis vous avez 'au3.keywords.udfs=' il vous suffit de rajouter le nom de votre fonction dans cette liste pour la voir apparaitre en bleu clair.
Pour l'autocomplétion, je vous conseille vivement de lire ce tutoriel que vous auriez trouvé avec un peu de recherche sur le forum.
http://autoitscript.fr/forum/viewtopic.php?f=11&t=2302
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
BONJOUR!
J'ai à nouveau un problème aujourd'hui, car j'essaie de faire référence à des nouvelles fonctions que j'ai ajoutées au fichier IE.au3.
Un message d'erreur apparaît lorsque je fait référence à ces fonctions dans mon programme:
c:\DEVELOPPEMENT\AutoIt3 _ API\Examples\MaNavigationInternet.au3(7,85) : ERROR: IE6_AccederAuneNouvellePageInternet(): undefined function.
IE6_AccederAuneNouvellePageInternet($PageEnCours,$TempsDeChargementTheoriqueDeMaPage)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
c:\DEVELOPPEMENT\AutoIt3 _ API\Examples\MaNavigationInternet.au3 - 1 error(s), 0 warning(s)
!>12:45:28 AU3Check ended.rc:2
Hors, j'ai bien fait inclus ces références dans le fichiers du dossier properties:
c:\DEVELOPPEMENT\AutoIt3 _ API\SciTE\Properties\
Je joins mes deux fichiers du dossier PROPERTIES pour que vous ayez une idée de ce qui cloche.
J'ai à nouveau un problème aujourd'hui, car j'essaie de faire référence à des nouvelles fonctions que j'ai ajoutées au fichier IE.au3.
Un message d'erreur apparaît lorsque je fait référence à ces fonctions dans mon programme:
c:\DEVELOPPEMENT\AutoIt3 _ API\Examples\MaNavigationInternet.au3(7,85) : ERROR: IE6_AccederAuneNouvellePageInternet(): undefined function.
IE6_AccederAuneNouvellePageInternet($PageEnCours,$TempsDeChargementTheoriqueDeMaPage)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
c:\DEVELOPPEMENT\AutoIt3 _ API\Examples\MaNavigationInternet.au3 - 1 error(s), 0 warning(s)
!>12:45:28 AU3Check ended.rc:2
Hors, j'ai bien fait inclus ces références dans le fichiers du dossier properties:
c:\DEVELOPPEMENT\AutoIt3 _ API\SciTE\Properties\
Je joins mes deux fichiers du dossier PROPERTIES pour que vous ayez une idée de ce qui cloche.
Modifié en dernier par martinbrait le lun. 19 juil. 2010 19:24, modifié 1 fois.
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
Lorsque tu utilises des fonctions qui ne sont pas natives à autoit, tu dois
spécifier le fichier à inclure.
ex :
Si tu essaies d'exécuter ce script sans la ligne #include, la fonction _ispressed ne sera
pas reconnue parce qu'elle est stockée dans le fichier misc.au3.
spécifier le fichier à inclure.
ex :
Code : Tout sélectionner
#include <Misc.au3>
$gui = GUICreate('test',300,300,-1,50)
GUICtrlCreateLabel('Appuyez sur la touche ''Fin'' pour quitter',50,120,300,30)
GUISetState()
$dll = DllOpen('user32.dll')
While Not _IsPressed(23,$dll)
Sleep(100)
WEnd
DllClose($dll)
pas reconnue parce qu'elle est stockée dans le fichier misc.au3.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
Merci beaucoup de m'apporter de l'aide.
Je crois que mon problème ne vient pas du manque de citation du fichier contenant ma fonction.
En fait, j'ai stocké mes nouvelles références dans le fichier IE.au3,
que je cite correctement au début de mon programme.
Les fonctions natives de IE.au3 sont reconnues, mais mes propres fonctions, stockées dans
le même fichiers ne sont pas reconnues.
Je crois que mon problème ne vient pas du manque de citation du fichier contenant ma fonction.
En fait, j'ai stocké mes nouvelles références dans le fichier IE.au3,
que je cite correctement au début de mon programme.
Les fonctions natives de IE.au3 sont reconnues, mais mes propres fonctions, stockées dans
le même fichiers ne sont pas reconnues.
Code : Tout sélectionner
#include<IE.au3>
$PageEnCours = "http://MonDossier/fichier36?dossier=12918&an=10"
$TempsDeChargementTheoriqueDeMaPage = 1000
;LA FONCTION CI-DESSOUS FONCTIONNE SANS PROBLEME
_IECreate($PageEnCours)
Sleep(2000)
;LA FONCTION CI DESSOUS DEVRAIT FONCTIONNER MAIS ELLE N'EST PAS RECONNUE
;IE6_AccederAuneNouvellePageInternet($PageEnCours,$TempsDeChargementTheoriqueDeMaPage)-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
Premièrement, afin d'éviter toute confusion, de pouvoir mieux identifier les erreurs et d'être
en mesure d'apporter des modifications plus aisément par la suite, il vaudrait mieux créer un
nouveau fichier dans le dossier include que tu nommeras comme tu le souhaites et de
laisser le fichier ie.au3 sans modification.
De plus, si le fichier ie.au3 est modifié lors d'une mise à jour d'autoit, le nouveau fichier ie.au3
écrasera ton fichier modifié, ce qui n'est pas souhaitable.
1. Créé un fichier dans le dossier include d'autoit nommé MonInclude.au3 (tu peux le nommer comme tu veux)
2. Dans ce fichier, la ligne :
doit être mise en début de fichier (tous les includes l'ont).
Ensuite, tu peux y mettre tes fonctions.
Si certaines de tes fonctions personnalisées ont besoin d'un autre include, comme par
exemple ie.au3, il faut que tu rajoutes, en début de fichier tes includes.
Ex : (tu peux le rajouter dans ton dossier include si tu veux le tester à des fins de compréhension)
MonInclude.au3
Ensuite, tu créés un nouveau fichier script (pas dans include celui-là) que nous
nommerons MonScript.au3 .
MonScript.au3
Ceci dit, tu devrais aller faire un tour ici :
http://www.siteduzero.com/tutoriel-3-22 ... utoit.html
pour un tutoriel couvrant les bases et visiter la section tutoriels de ce forum pour d'autres
cours de base qui pourront t'en apprendre un peu plus.
en mesure d'apporter des modifications plus aisément par la suite, il vaudrait mieux créer un
nouveau fichier dans le dossier include que tu nommeras comme tu le souhaites et de
laisser le fichier ie.au3 sans modification.
De plus, si le fichier ie.au3 est modifié lors d'une mise à jour d'autoit, le nouveau fichier ie.au3
écrasera ton fichier modifié, ce qui n'est pas souhaitable.
1. Créé un fichier dans le dossier include d'autoit nommé MonInclude.au3 (tu peux le nommer comme tu veux)
2. Dans ce fichier, la ligne :
Code : Tout sélectionner
#include-onceEnsuite, tu peux y mettre tes fonctions.
Si certaines de tes fonctions personnalisées ont besoin d'un autre include, comme par
exemple ie.au3, il faut que tu rajoutes, en début de fichier tes includes.
Ex : (tu peux le rajouter dans ton dossier include si tu veux le tester à des fins de compréhension)
MonInclude.au3
Code : Tout sélectionner
#include-once
#include<ie.au3>
Func VisiterGoogle()
_IECreate('www.google.ca',0,1,1,1)
EndFunc
Ensuite, tu créés un nouveau fichier script (pas dans include celui-là) que nous
nommerons MonScript.au3 .
MonScript.au3
Code : Tout sélectionner
#include<MonInclude.au3>
VisiterGoogle()
Ceci dit, tu devrais aller faire un tour ici :
http://www.siteduzero.com/tutoriel-3-22 ... utoit.html
pour un tutoriel couvrant les bases et visiter la section tutoriels de ce forum pour d'autres
cours de base qui pourront t'en apprendre un peu plus.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
Merci, je cerne peu à peu mon problème.
Je mets donc mes fonctions persos dans Include, à l'intérieur d'un autre fichier.
J'insère #include-once, comme je le fais toujours pour mes ressources personnelles dans Include.
En fait, la source de mes problèmes est la suivante:
l'include, en ce qui concerne mes fichiers n'est OK, que si j'indique soit un chemin relatif:
#include<..\Include\MonInclude.au3>
ou si j'indique un chemin absolu:
#include<C:\ProgramFiles\AutoIt\AutoIt3 _ API\Include\MonInclude.au3>
Sous cette condition UNIQUEMENT, mes fonctions sont reconnues et interagissent normalement
avec mes programmes
Est-ce que j'ai oublié un réglage concernant SCITE et lequel?
Ou est le secret pour ne plus avoir à déclarer le chemin de mon fichier de fonctions personnelles, enregistré dans le dossier Include?
Une nuance,toutefois. Après compilation, le fichier .exe qui porte une référence à MonInclude.au3 s'accomode sans aucun problème de la simple citation #include<MonInclude.au3> en tête de fichier. Je n'ai dans ce cas pas forcément besoin de préciser un chemin concernant MonInclude.au3, si toutefois celui-ci est stocké dans le répertoire Include, d'AutoIt.
Info complémentaire trouvée dans l'aide d'AutoIt:
The search order used by AutoIt depends on which form of #include you use. The tables below show the order directories are searched using both forms.
Using #include <>
Standard library The path of the currently running interpreter with "\Include" appended is searched.
User-defined libraries The registry value mentioned above is read and each directory is searched in the order they appear in.
Script directory The directory of the currently executing script.
Using #include "" (This is the reverse of #include <>).
Script directory The directory of the currently executing script.
User-defined libraries The registry value mentioned above is read and each directory is searched in the reverse order they appear in.
Standard library The path of the currently running interpreter with "\Include" appended is searched.
A note about using the /AutoIt3ExecuteScript option. Since the standard library is searched for in the current interpreter's directory, the standard library functions will not be found; that library will only be found when run through AutoIt3.exe. It's recommended that you compile a script to the .a3x format before attempting to run it with /AutoIt3ExecuteScript.
Aut2Exe uses the same algorithm as AutoIt3.exe with the only difference being it looks for the Include sub-directory as being in a sibling directory to itself (..\Include).
If Opt("TrayIconDebug",1) only 64 include files name can be displayed in the traytooltip. for the other no filename will be displayed.
Je mets donc mes fonctions persos dans Include, à l'intérieur d'un autre fichier.
J'insère #include-once, comme je le fais toujours pour mes ressources personnelles dans Include.
l'include, en ce qui concerne mes fichiers n'est OK, que si j'indique soit un chemin relatif:
#include<..\Include\MonInclude.au3>
ou si j'indique un chemin absolu:
#include<C:\ProgramFiles\AutoIt\AutoIt3 _ API\Include\MonInclude.au3>
Sous cette condition UNIQUEMENT, mes fonctions sont reconnues et interagissent normalement
avec mes programmes
Est-ce que j'ai oublié un réglage concernant SCITE et lequel?
Ou est le secret pour ne plus avoir à déclarer le chemin de mon fichier de fonctions personnelles, enregistré dans le dossier Include?
Une nuance,toutefois. Après compilation, le fichier .exe qui porte une référence à MonInclude.au3 s'accomode sans aucun problème de la simple citation #include<MonInclude.au3> en tête de fichier. Je n'ai dans ce cas pas forcément besoin de préciser un chemin concernant MonInclude.au3, si toutefois celui-ci est stocké dans le répertoire Include, d'AutoIt.
Info complémentaire trouvée dans l'aide d'AutoIt:
The search order used by AutoIt depends on which form of #include you use. The tables below show the order directories are searched using both forms.
Using #include <>
Standard library The path of the currently running interpreter with "\Include" appended is searched.
User-defined libraries The registry value mentioned above is read and each directory is searched in the order they appear in.
Script directory The directory of the currently executing script.
Using #include "" (This is the reverse of #include <>).
Script directory The directory of the currently executing script.
User-defined libraries The registry value mentioned above is read and each directory is searched in the reverse order they appear in.
Standard library The path of the currently running interpreter with "\Include" appended is searched.
A note about using the /AutoIt3ExecuteScript option. Since the standard library is searched for in the current interpreter's directory, the standard library functions will not be found; that library will only be found when run through AutoIt3.exe. It's recommended that you compile a script to the .a3x format before attempting to run it with /AutoIt3ExecuteScript.
Aut2Exe uses the same algorithm as AutoIt3.exe with the only difference being it looks for the Include sub-directory as being in a sibling directory to itself (..\Include).
If Opt("TrayIconDebug",1) only 64 include files name can be displayed in the traytooltip. for the other no filename will be displayed.
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [..] Faire référence aux fichiers include "complémentaires"
EUREKA!
MON PROBLEME EST ENFIN RESOLU!
Résolution de mon problème:
Exécuter le fichier C:\ProgramFiles\DEVELOPPEMENT\AutoIt3 _ API\SciTE\SciTEConfig\SciteConfig.au3
//////////////////////////////
Aller dans General Settings,
et remplir le champs:
////////////////
UserInclude Dir:
////////////////
En notant l'adresse que je souhaite utiliser pour mes fichiers Include.
Dans mon cas:
C:\ProgramFiles\DEVELOPPEMENT\AutoIt3 _ API\Include
////////////////
Et voilà, c'était tout bête, mais ce n'était écrit noir sur blanc, dans aucun tutorial!
Merci à tous pour votre aide, et vive AutoIt!
- martinbrait
- Niveau 4

- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
[R] Faire référence aux fichiers include "complémentaires"
La création du fichier UDF
Un fichier UDF est un fichier AutoIt contenant la définition de fonctions non incluses dans le noyau AutoIt. Le package d’installation d’AutoIt contient déjà un certain nombre de fichiers UDF’s qui peuvent être utilisés en utilisant un système d’inclusion.
#include <File.au3>
$hFile = « Exemple.txt »
_FileReadToArray($hFile,$aRecords)
_ArrayDisplay($aRecords)
Pour la création de votre propre fichier UDF, il est demandé de respecter des normes. Vous pourrez les trouver ici :
http://www.autoitscript.com/autoit3/udf ... ndards.htm
Au final, le fichier devrait ressembler à quelque chose comme ceci :
#Region
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion
#include-Once
; #INDEX# ====================================
; Title ………: Ma Librairie
; AutoIt Version : 3.2.12
; Language ……: Francais
; Description …: Fonctions de traitement des fichiers
; ======================================================
; #CURRENT# =============================================
;_DeleteBlankLineInFile
; ====================================================
; #FUNCTION# ================================================
; Name ……….: _DeleteBlankLineInFile
; Description …: Efface les lignes vides dun fichier texte
; Syntax ……..: _DeleteBlankLineInFile($hFileName)
; Parameters ….: $hFileName – Fichier à modifier
; Return values .: Success – 1 Fichier retaillé
; Failure – 0, Macro @error mise a:
; |1 – $sFileName n existe pas
; |2 – Impossible d ouvrir le fichier en lecture
; |3 – Impossible d ouvrir le fichier en écriture
; |4 – Impossible d écrire dans le fichier
; Author ……..: Eric Chudyba
; Modified…….: Final
; Remarks …….:
; Related …….:
; Link ……….;
; Example …….; No
; ===============================================================
Func _DeleteBlankLineInFile($hFileName)
If Not FileExists($hFileName) Then Return SetError(1, 0, 0)
Local $iFile, $aRecords, $s_TotFile
; ====================================
; Mise en tableau du fichier texte
; ====================================
$iFile = FileOpen($hFileName, 0)
If $iFile = -1 Then Return SetError(2, 0, 0)
$s_TotFile = FileRead($iFile, FileGetSize($hFileName))
$aRecords = StringSplit(StringStripCR($s_TotFile), @LF)
FileClose($iFile)
; ====================================
; Réécriture du fichier texte
; ====================================
$iFile = FileOpen($hFileName, 2)
If $iFile = -1 Then Return SetError(3, 0, 0)
For $i = 1 To $aRecords[0] - 1
If Not StringIsSpace($aRecords[$i]) AND Not $aRecords[$i] = » Then
If FileWriteLine($iFile, $aRecords[$i]) = 0 Then
SetError(4)
FileClose($iFile)
Return 0
EndIf
EndIf
Next
Return 1
EndFunc
De façon à vérifier que votre UDF ne comporte pas d’erreur, il est conseillé de lancer une compilation de votre fichier en ajoutant les lignes
#Region
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion
Si vous obtenez des erreurs, corrigez-les. Sinon, votre fichier UDF est prêt à être intégré à SciTe.
L’intégration du fichier UDF à SciTe
Avant toute chose, la première action à effectuer est de placer votre fichier UDF dans le dossier « Include » d’AutoIt qui se trouve à cet endroit C:\Program Files\AutoIt3\Include
Affichage de l’info bulle
Pour ajouter les informations qui seront affichées dans l’info bulle, ouvrez le fichier contenant les définitions des fonctions en allant dans le menu Tools de SciTe et en ouvrantUser CallTip Entries.
(Dans l’explorateur, ce fichier est : C:\Program Files\AutoIt3\SciTe\api\au3.user.calltips.api)
Une fois ce fichier ouvert, ajoutez y la définition des fonctions de votre fichier UDF en suivant la syntaxe suivante
_NomFonction(parametre1,parametre2 [, parametreOptionnel1 ]) Commentaires de la fonction
Une fois ceci fait, vous pouvez fermer le fichier.
Si vous voulez tester le fonctionnement (sans avoir la coloration syntaxique que nous allons déclarer par la suite), vous pouvez fermer et rouvrir SciTe.
Si nous reprenons notre exemple, cela donnera quelque chose comme ceci
_DeleteBlankLineInFile( « file » ) Efface les lignes vides d’un fichier texte. Nécessite l’inclusion de _MyLib.au3 ( #include <_MyLib.au3> )
Vous pouvez déjà constater que la fonction est reconnue par SciTe et que l’auto-complétion fonctionne.
Voilà. L’info bulle affiche ce que vous avez déclaré auparavant. Vous pouvez constater que la coloration syntaxique n’est pas encore active et que l’on peut très bien utiliser ce mode de fonctionnement pour différencier les fonctions des fichiers UDF inclus dans le package d’installation d’AutoIt avec vos fonctions personnelles.
Ajout de la coloration syntaxique
Pour ajouter la coloration syntaxique aux fonctions contenues dans notre fichier UDF, il faut éditer le fichier au3.keywords.properties.
Vous pouvez ouvrir ce fichier en passant par le menu Options de SciTe et en cliquant sur Open au3.keywords.properties ou alors en passant par l’explorateur pour ouvrir le fichier se trouvant à l’emplacement C:\Program Files\AutoIt3\SciTe\Properties\au3.keywords.properties.
Une fois le fichier ouvert, placez vous à la fin de la section au3.keywords.udfs (Environ ligne 547), et ajoutez y le nom de vos fonctions.
/!\ ATTENTION : Vous devez impérativement tout écrire en minuscules !
N’oubliez pas non plus d’ajouter un antislash « \ » si vous passez à la ligne.
Vous devriez obtenir quelque chose comme ceci :
Vous pouvez à présent fermer ce fichier. Si nous faisons un test avec notre UDF nous obtenons
A partir de maintenant, vos fonctions seront documentées et la coloration syntaxique s’appliquera lorsque vous les appellerez
Un fichier UDF est un fichier AutoIt contenant la définition de fonctions non incluses dans le noyau AutoIt. Le package d’installation d’AutoIt contient déjà un certain nombre de fichiers UDF’s qui peuvent être utilisés en utilisant un système d’inclusion.
#include <File.au3>
$hFile = « Exemple.txt »
_FileReadToArray($hFile,$aRecords)
_ArrayDisplay($aRecords)
Pour la création de votre propre fichier UDF, il est demandé de respecter des normes. Vous pourrez les trouver ici :
http://www.autoitscript.com/autoit3/udf ... ndards.htm
Au final, le fichier devrait ressembler à quelque chose comme ceci :
#Region
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion
#include-Once
; #INDEX# ====================================
; Title ………: Ma Librairie
; AutoIt Version : 3.2.12
; Language ……: Francais
; Description …: Fonctions de traitement des fichiers
; ======================================================
; #CURRENT# =============================================
;_DeleteBlankLineInFile
; ====================================================
; #FUNCTION# ================================================
; Name ……….: _DeleteBlankLineInFile
; Description …: Efface les lignes vides dun fichier texte
; Syntax ……..: _DeleteBlankLineInFile($hFileName)
; Parameters ….: $hFileName – Fichier à modifier
; Return values .: Success – 1 Fichier retaillé
; Failure – 0, Macro @error mise a:
; |1 – $sFileName n existe pas
; |2 – Impossible d ouvrir le fichier en lecture
; |3 – Impossible d ouvrir le fichier en écriture
; |4 – Impossible d écrire dans le fichier
; Author ……..: Eric Chudyba
; Modified…….: Final
; Remarks …….:
; Related …….:
; Link ……….;
; Example …….; No
; ===============================================================
Func _DeleteBlankLineInFile($hFileName)
If Not FileExists($hFileName) Then Return SetError(1, 0, 0)
Local $iFile, $aRecords, $s_TotFile
; ====================================
; Mise en tableau du fichier texte
; ====================================
$iFile = FileOpen($hFileName, 0)
If $iFile = -1 Then Return SetError(2, 0, 0)
$s_TotFile = FileRead($iFile, FileGetSize($hFileName))
$aRecords = StringSplit(StringStripCR($s_TotFile), @LF)
FileClose($iFile)
; ====================================
; Réécriture du fichier texte
; ====================================
$iFile = FileOpen($hFileName, 2)
If $iFile = -1 Then Return SetError(3, 0, 0)
For $i = 1 To $aRecords[0] - 1
If Not StringIsSpace($aRecords[$i]) AND Not $aRecords[$i] = » Then
If FileWriteLine($iFile, $aRecords[$i]) = 0 Then
SetError(4)
FileClose($iFile)
Return 0
EndIf
EndIf
Next
Return 1
EndFunc
De façon à vérifier que votre UDF ne comporte pas d’erreur, il est conseillé de lancer une compilation de votre fichier en ajoutant les lignes
#Region
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion
Si vous obtenez des erreurs, corrigez-les. Sinon, votre fichier UDF est prêt à être intégré à SciTe.
L’intégration du fichier UDF à SciTe
Avant toute chose, la première action à effectuer est de placer votre fichier UDF dans le dossier « Include » d’AutoIt qui se trouve à cet endroit C:\Program Files\AutoIt3\Include
Affichage de l’info bulle
Pour ajouter les informations qui seront affichées dans l’info bulle, ouvrez le fichier contenant les définitions des fonctions en allant dans le menu Tools de SciTe et en ouvrantUser CallTip Entries.
(Dans l’explorateur, ce fichier est : C:\Program Files\AutoIt3\SciTe\api\au3.user.calltips.api)
Une fois ce fichier ouvert, ajoutez y la définition des fonctions de votre fichier UDF en suivant la syntaxe suivante
_NomFonction(parametre1,parametre2 [, parametreOptionnel1 ]) Commentaires de la fonction
Une fois ceci fait, vous pouvez fermer le fichier.
Si vous voulez tester le fonctionnement (sans avoir la coloration syntaxique que nous allons déclarer par la suite), vous pouvez fermer et rouvrir SciTe.
Si nous reprenons notre exemple, cela donnera quelque chose comme ceci
_DeleteBlankLineInFile( « file » ) Efface les lignes vides d’un fichier texte. Nécessite l’inclusion de _MyLib.au3 ( #include <_MyLib.au3> )
Vous pouvez déjà constater que la fonction est reconnue par SciTe et que l’auto-complétion fonctionne.
Voilà. L’info bulle affiche ce que vous avez déclaré auparavant. Vous pouvez constater que la coloration syntaxique n’est pas encore active et que l’on peut très bien utiliser ce mode de fonctionnement pour différencier les fonctions des fichiers UDF inclus dans le package d’installation d’AutoIt avec vos fonctions personnelles.
Ajout de la coloration syntaxique
Pour ajouter la coloration syntaxique aux fonctions contenues dans notre fichier UDF, il faut éditer le fichier au3.keywords.properties.
Vous pouvez ouvrir ce fichier en passant par le menu Options de SciTe et en cliquant sur Open au3.keywords.properties ou alors en passant par l’explorateur pour ouvrir le fichier se trouvant à l’emplacement C:\Program Files\AutoIt3\SciTe\Properties\au3.keywords.properties.
Une fois le fichier ouvert, placez vous à la fin de la section au3.keywords.udfs (Environ ligne 547), et ajoutez y le nom de vos fonctions.
/!\ ATTENTION : Vous devez impérativement tout écrire en minuscules !
N’oubliez pas non plus d’ajouter un antislash « \ » si vous passez à la ligne.
Vous devriez obtenir quelque chose comme ceci :
Vous pouvez à présent fermer ce fichier. Si nous faisons un test avec notre UDF nous obtenons
A partir de maintenant, vos fonctions seront documentées et la coloration syntaxique s’appliquera lorsque vous les appellerez
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Faire référence aux fichiers include "complémentaire
Les balises de code SVP ...
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é".

