[Ex] Retrouver la ligne d'erreur d'un script compilé
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.
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Bonjour,
Je veux me servir de votre outil mais j'ai à chaque fois :
>Running:(3.3.14.2):d:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\AU3\GetRealErrorLine.au3"
"D:\AU3\GetRealErrorLine.au3" (76) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If($CountTemp[2]) Then
If(^ ERROR
et visiblement cette erreur s'affiche avec n'importe quel fichier *.AU3 en entrée et en lui indiquant un n° de ligne inférieur au nombre de lignes total du programme.
Je veux me servir de votre outil mais j'ai à chaque fois :
>Running:(3.3.14.2):d:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\AU3\GetRealErrorLine.au3"
"D:\AU3\GetRealErrorLine.au3" (76) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If($CountTemp[2]) Then
If(^ ERROR
et visiblement cette erreur s'affiche avec n'importe quel fichier *.AU3 en entrée et en lui indiquant un n° de ligne inférieur au nombre de lignes total du programme.
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Oui, j'ai remarqué ça aussi .
Malheureusement, c'est codé avec les pieds
Je posterai ce soir (il faut que j'y pense) un script pour avoir le "script compilé" sous forme de source.
Cad : qui agit de la même façon que le compilateur, normalement il gère tous les cas (include, include-once, commentaires ";", commentaires "#cs / #ce", commentaires "#comment-start / #comment-end", les instructions multilignes "_")
Du coup le numéro de ligne correspondra au script généré et vous pourrez trouver d'où vient le problème
Malheureusement, c'est codé avec les pieds
Je posterai ce soir (il faut que j'y pense) un script pour avoir le "script compilé" sous forme de source.
Cad : qui agit de la même façon que le compilateur, normalement il gère tous les cas (include, include-once, commentaires ";", commentaires "#cs / #ce", commentaires "#comment-start / #comment-end", les instructions multilignes "_")
Du coup le numéro de ligne correspondra au script généré et vous pourrez trouver d'où vient le problème
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
C'est chose faite (voir 1er message)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Hello,
merci pour cette mise à jour. Il y a une petite erreur dans l'exemple.
Il faut remplacer #include "OneFileScript.au3" par #include "GetRealErrorLine.au3"
merci pour cette mise à jour. Il y a une petite erreur dans l'exemple.
Il faut remplacer #include "OneFileScript.au3" par #include "GetRealErrorLine.au3"
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Hello
Peut-être ça vaudrait le coup de vérifier si cette ligne existe dans le haut du script :
En effet si Au3Stripper a été utilisé avec ses options par défaut ton code ne marchera pas - et probablement rien ne marchera, d'ailleurs
Tiens à propos de Au3stripper on peut obtenir le script intégral tel qu'il va être utilisé par le compilateur avec ça (chemins à adapter) :
L'option /mergeonly (je cite) "will produce a scriptfile as AUT2EXE includes in the Compiled EXE. This allows you to find the proper linenumber when errors are reported. "
Ce qui est intéressant là-dedans c'est que Au3Stripper.exe est autonome donc on peut le glisser dans un FileInstall...
Peut-être ça vaudrait le coup de vérifier si cette ligne existe dans le haut du script :
#AutoIt3Wrapper_Run_Au3Stripper=y
En effet si Au3Stripper a été utilisé avec ses options par défaut ton code ne marchera pas - et probablement rien ne marchera, d'ailleurs
Tiens à propos de Au3stripper on peut obtenir le script intégral tel qu'il va être utilisé par le compilateur avec ça (chemins à adapter) :
Run("AU3Stripper.exe myscript.au3 /mergeonly", "", @SW_HIDE)
L'option /mergeonly (je cite) "will produce a scriptfile as AUT2EXE includes in the Compiled EXE. This allows you to find the proper linenumber when errors are reported. "
Ce qui est intéressant là-dedans c'est que Au3Stripper.exe est autonome donc on peut le glisser dans un FileInstall...
" 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 )
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Je ne connaissais pas le stripper.
Moi j'en ai fini avec les erreurs de script, je vous refourgue le bébé ^^
Moi j'en ai fini avec les erreurs de script, je vous refourgue le bébé ^^
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Père indigneje vous refourgue le bébé ^^
Bon ben alors voilà ma version... ça télécharge Au3Stripper dans le répertoire temp et - en principe - ça trouve la ligne avec précision
Le code est très facilement modifiable/adaptable. Le choix de la listview, ben c'est parce que... j'aime les listviews
Je n'ai pas poussé les essais donc il peut éventuellement se produire des curiosités (rien de toxique, juste le classique "unexpected result" )
Code : Tout sélectionner
voir message #36
" 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 )
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
@Mikell : Ta solution fonctionne uniquement si on a compilé avec Au3Stripper ou dans tous les cas ?
Edit : Après comparaison entre stripped et "ma technique", le stripped supprime les lignes de précompilation -> #xxx, alors qu'ils doivent être pris en compte pour une compilation "normale", ce qui entraine un décalage de lignes.
Edit : Après comparaison entre stripped et "ma technique", le stripped supprime les lignes de précompilation -> #xxx, alors qu'ils doivent être pris en compte pour une compilation "normale", ce qui entraine un décalage de lignes.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Je dirais plutôt que ça fonctionne si on n' a pas compilé avec Au3Stripper
Sinon c'est bizarre, en principe les lignes de précompilation devraient être supprimées par le compilateur et donc ne pas être prises en compte ni dans le décompte des lignes dans le script compilé, ni par le stripper
Je n'ai pas vraiment testé ce cas-là, mais même après rajout de quelques lignes #AutoIt3Wrapper_* en tête de script la ligne d'erreur retournée semble correcte
Tu pourrais poster un exemple où les numéros de ligne sont décalés ?
Sinon c'est bizarre, en principe les lignes de précompilation devraient être supprimées par le compilateur et donc ne pas être prises en compte ni dans le décompte des lignes dans le script compilé, ni par le stripper
Je n'ai pas vraiment testé ce cas-là, mais même après rajout de quelques lignes #AutoIt3Wrapper_* en tête de script la ligne d'erreur retournée semble correcte
Tu pourrais poster un exemple où les numéros de ligne sont décalé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 )
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Ce sont en fait les #Region / #EndRegion, etc qui sont supprimé par le stripped
Il y en a par exemple dans "WinAPIInternals.au3"
Il y en a par exemple dans "WinAPIInternals.au3"
EDIT : Après plusieurs tests, seul #pragma est supprimé à la compilation, tous les autres restent dans le code compilé (j'en profite pour mettre à jour mon OneFileScript qui ne supprimait pas #pragma ^^)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Re,
Suite à votre conversation, je viens de faire un test avec un de mes petits programmes et contrairement à ce que j'ai dit : la compil est bonne mais le résultat donné est erroné.
J'ai modifié mon programme pour qu'il plante. L'exécutable me dit : Erreur ligne 17886 => Array variable has incorrect number...
Pour le script de Mikell : l'erreur sur la ligne 17886 correspond à : $NL=10
Depuis mon source, j'ai une erreur sur la ligne 349 :
"D:\AU3\!ChallengExtarV25.au3" (349) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$ListFich[$y][0] = $Fichiers[$y]
$ListFich[$y][0] = ^ ERROR
Mon source démarre avec ces lignes :
#Region
#AutoIt3Wrapper_icon=d:\au3\YL.ico
#AutoIt3Wrapper_outfile=ChallengExtar.exe
#AutoIt3Wrapper_Res_Comment=Commentaires
#AutoIt3Wrapper_Res_Description= Comment générer un Fichier Challenge
#AutoIt3Wrapper_Res_Fileversion=2.4
#AutoIt3Wrapper_Res_LegalCopyright=(C)[Yle-2012-2016]
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Res_Field=Commentaires| Créé par @Yves L**** (Juillet 2012)
#AutoIt3Wrapper_Res_Field=Enterprise | Yle
#AutoIt3Wrapper_Res_Field=Email|yle****@gmail.com
#AutoIt3Wrapper_UseX64=N
#AutoIt3Wrapper_Run_AU3Check=y
#EndRegion
#NoTrayIcon ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include-once
#include <Array.au3>
#include <Array2D.au3>
#include <Array_yl.au3>
#include <EditConstants.au3>
#include <ExcelCOM_UDF.au3>
#include <GuiConstantsEx.au3>
Si besoin, je fournis le source complet...
Suite à votre conversation, je viens de faire un test avec un de mes petits programmes et contrairement à ce que j'ai dit : la compil est bonne mais le résultat donné est erroné.
J'ai modifié mon programme pour qu'il plante. L'exécutable me dit : Erreur ligne 17886 => Array variable has incorrect number...
Pour le script de Mikell : l'erreur sur la ligne 17886 correspond à : $NL=10
Depuis mon source, j'ai une erreur sur la ligne 349 :
"D:\AU3\!ChallengExtarV25.au3" (349) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$ListFich[$y][0] = $Fichiers[$y]
$ListFich[$y][0] = ^ ERROR
Mon source démarre avec ces lignes :
#Region
#AutoIt3Wrapper_icon=d:\au3\YL.ico
#AutoIt3Wrapper_outfile=ChallengExtar.exe
#AutoIt3Wrapper_Res_Comment=Commentaires
#AutoIt3Wrapper_Res_Description= Comment générer un Fichier Challenge
#AutoIt3Wrapper_Res_Fileversion=2.4
#AutoIt3Wrapper_Res_LegalCopyright=(C)[Yle-2012-2016]
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Res_Field=Commentaires| Créé par @Yves L**** (Juillet 2012)
#AutoIt3Wrapper_Res_Field=Enterprise | Yle
#AutoIt3Wrapper_Res_Field=Email|yle****@gmail.com
#AutoIt3Wrapper_UseX64=N
#AutoIt3Wrapper_Run_AU3Check=y
#EndRegion
#NoTrayIcon ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include-once
#include <Array.au3>
#include <Array2D.au3>
#include <Array_yl.au3>
#include <EditConstants.au3>
#include <ExcelCOM_UDF.au3>
#include <GuiConstantsEx.au3>
Si besoin, je fournis le source complet...
Modifié en dernier par mikell le jeu. 10 mars 2016 19:09, modifié 1 fois.
Raison : enlevé les données personnelles
Raison : enlevé les données personnelles
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Trop bon merci!
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Bonjour,
La modification de TommyDDR semble bonne
J'ai téléchargé, puis lancé Example-2.au3
J'ai entré mon nom de fichier et mon erreur 17886 et example-2.au3 me renvoit ceci :
$Fichiers[0] = $Fichiers[0] -1
ReDim $Fichiers[$Fichiers[0]+1]
EndIf
if $ok = 0 then $Fichiers[0] = 4
For $y = 1 to $Fichiers[0]
$ListFich[$y][0] = $Fichiers[$y] <- ERROR
$oXL = _ExcelBookOpen($Fichiers[$y],0)
If @error = 2 Then
MsgBox(0, "Erreur_33", "Le fichier " & $ListFich[$y] & " n'existe pas ou n'est pas un classement général final")
KillExcel()
Exit
Par contre, si j'enregistre le fichier Example-2.au3 et que je relance.
Le programme me demande bien mon fichier source puis la ligne en erreur et j'ai de nouveau cette erreur :
"D:\AU3\GetRealErrorLine.au3" (76) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If($CountTemp[2]) Then
If(^ ERROR
->09:34:37 AutoIt3.exe ended.rc:1
+>09:34:37 AutoIt3Wrapper Finished.
>Exit code: 1 Time: 11.79
La modification de TommyDDR semble bonne
J'ai téléchargé, puis lancé Example-2.au3
J'ai entré mon nom de fichier et mon erreur 17886 et example-2.au3 me renvoit ceci :
$Fichiers[0] = $Fichiers[0] -1
ReDim $Fichiers[$Fichiers[0]+1]
EndIf
if $ok = 0 then $Fichiers[0] = 4
For $y = 1 to $Fichiers[0]
$ListFich[$y][0] = $Fichiers[$y] <- ERROR
$oXL = _ExcelBookOpen($Fichiers[$y],0)
If @error = 2 Then
MsgBox(0, "Erreur_33", "Le fichier " & $ListFich[$y] & " n'existe pas ou n'est pas un classement général final")
KillExcel()
Exit
Par contre, si j'enregistre le fichier Example-2.au3 et que je relance.
Le programme me demande bien mon fichier source puis la ligne en erreur et j'ai de nouveau cette erreur :
"D:\AU3\GetRealErrorLine.au3" (76) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
If($CountTemp[2]) Then
If(^ ERROR
->09:34:37 AutoIt3.exe ended.rc:1
+>09:34:37 AutoIt3Wrapper Finished.
>Exit code: 1 Time: 11.79
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
$CountTemp[2] n'existe plus, vous utilisez l'ancien GetRealErrorLine.au3
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Effectivement...
Remarque : Ce serait (peut-être) mieux de tout regrouper en un seul script
Remarque : Ce serait (peut-être) mieux de tout regrouper en un seul script
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
La récente (du 12/3) nouvelle version de Au3Stripper règle la plupart des problèmes, reste juste comme exception les #pragma (facile à gérer dans le script)
Tommy et Yle vous pouvez tester ça ? (il faut d'abord supprimer les anciens fichiers du stripper dans @temp )
Edit
J'ai supprimé quelques messages (pour alléger le sujet) qui n'avaient plus de raison d'être suite à la sortie de cette nouvelle version de Au3Stripper
Tommy et Yle vous pouvez tester ça ? (il faut d'abord supprimer les anciens fichiers du stripper dans @temp )
Edit
J'ai supprimé quelques messages (pour alléger le sujet) qui n'avaient plus de raison d'être suite à la sortie de cette nouvelle version de Au3Stripper
Code : Tout sélectionner
voir message #41
" 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 )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Avec un peu de retard (vacances à l'étranger), je viens de tester ta dernière version...
L'erreur en ligne 17886 me renvoie à cette ligne : For $y = 1 to $Fichiers[0]
au lieu de la suivante : $ListFich[$y][0] = $Fichiers[$y]
L'erreur en ligne 17886 me renvoie à cette ligne : For $y = 1 to $Fichiers[0]
au lieu de la suivante : $ListFich[$y][0] = $Fichiers[$y]
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Le plus simple serait encore de fournir le script complet pour que l'on puisse tester de notre coté et ne pas y aller à taton
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
En effet
D'après Jos (le développeur) cette dernière version du 12/3 de Au3Stripper (16.306.1237.1) est censée régler tous les problèmes de décalage à l'exception des lignes #pragma, s'il existe d'autres exceptions passées inaperçues ce serait intéressant de les lui signaler
A moins évidemment que le souci vienne de mon script (Tommy tu l'as testé ? )
Yle si tu acceptes de fournir ton script pourrais-tu joindre les includes perso ? (ton message #31 semble montrer que ton script en utilise)
D'après Jos (le développeur) cette dernière version du 12/3 de Au3Stripper (16.306.1237.1) est censée régler tous les problèmes de décalage à l'exception des lignes #pragma, s'il existe d'autres exceptions passées inaperçues ce serait intéressant de les lui signaler
A moins évidemment que le souci vienne de mon script (Tommy tu l'as testé ? )
Yle si tu acceptes de fournir ton script pourrais-tu joindre les includes perso ? (ton message #31 semble montrer que ton script en utilise)
" 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 )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [Ex] Retrouver la ligne d'erreur d'un script compilé
Mikell
pas de souci pour te fournir mon script et mon include bidouillé
Envoies moi un message sur ma boite mail (tu dois la connaitre) car tu as effacé des caractères et je t'envoie par mail ce qu'il te faut
pas de souci pour te fournir mon script et mon include bidouillé
Envoies moi un message sur ma boite mail (tu dois la connaitre) car tu as effacé des caractères et je t'envoie par mail ce qu'il te faut