Page 1 sur 1

LigneNumber une fois compilé (proposition de fonction)

Posté : ven. 14 nov. 2025 14:39
par A2Energie
Bonjour amis Autoitiens, :D

Je dois lancer le script une fois compilé. Cela m'a donc obligé à inventer un compteur de ligne afin de reporter le numéro de ligne de l'erreur fatale Autoit à la ligne réelle sur : SciTE-Lite. Je sais qu'il existe déjà des propositions mais trop complexe pour moi,

-- INSTALLATION --
1/ Vous copiez la fonction TELS QUELLE, APRES les #include de votre script,
2/ Vous compilez puis lancez tels quel, une fenêtre d'erreur s'affiche, c’est normal.
3/ Vous notez le numéro de ligne erreur lors de la première execution du programme à : $Script_LigneNumber_LigneManuelle = 34841 ; ici par exemple l'erreur est à la ligne 34841
Voilà c'est prêt :wink:

-- FONCTIONNEMENT --
1/ Lorsque l'erreur fatal apparait retenez le numéro de ligne d'erreur puis cliquez sur ok,
2/ une fenêtre de type inputbox apparait, reportez y le numéro de la ligne erreur.
3/ Vous obtenez le numéro de la ligne de compatible avec SciTE-Lite

Code : Tout sélectionner

Script_LigneNumber()
Func Script_LigneNumber($Script_LigneNumber1 = True)
	; -------------------------------------------
	; - Description :
	; 		Permet de calculer le numéro de ligne de SciTE-Lite
	; - Variables :
	; 		$Script_LigneNumber1 = Paramètrage
	; - Retourne :
	; 		NC
	; -------------------------------------------
	$LigneNumber_Chemin = @ScriptFullPath ; Ou remplacer par le chemin du fichier .au3 original
	$Script_LigneNumber_LigneManuelle = ; indiquer ici le numéro de ligne erreur indiqué par l'erreur lors du premier lancement de l'exe
	If IsDeclared("Script_LigneNumber1") Then
		If $Script_LigneNumber_LigneManuelle = "" Then Noter la ligne d erreur : Script_LigneNumber_LigneManuelle ; déclanche erreur
		OnAutoItExitRegister("Script_LigneNumber")
		Return ""
	EndIf
	If @exitCode = 0 Then Return ""
	$Script_LigneNumber_Indique = InputBox("Numéro de ligne", "Indiquer le numéro de la ligne d'erreur")
	If $Script_LigneNumber_Indique = "" Then Return ""
	$LigneNumber_Chemin = StringReplace($LigneNumber_Chemin, ".exe", ".au3")
	If Not FileExists($LigneNumber_Chemin) Then Return ""
	$LigneNumber_Script = FileRead($LigneNumber_Chemin)
	$LigneNumber_Script = StringSplit($LigneNumber_Script, @CRLF, 1)
	$LigneNumber_ScriptString = ""
	$LigneNumber_Ligne = ""
	For $i = 1 To $LigneNumber_Script[0]
		$LigneNumber_ScriptString = $LigneNumber_Script[$i]
		$LigneNumber_ScriptString = StringReplace($LigneNumber_ScriptString, " ", "")
		$LigneNumber_ScriptString = StringReplace($LigneNumber_ScriptString, @TAB, "")
		If StringInStr($LigneNumber_ScriptString, "$Script_LigneNumber_LigneManuelle=") = 1 Then $LigneNumber_Ligne = StringReplace($LigneNumber_ScriptString, "$Script_LigneNumber_LigneManuelle=", "")
		If Not $LigneNumber_Ligne Then ContinueLoop
		If $LigneNumber_ScriptString = "" Then ContinueLoop
		If StringLeft($LigneNumber_ScriptString, 1) = ";" Then ContinueLoop
		If StringRight($LigneNumber_Script[$i], 2) = " _" Then ContinueLoop
		If $LigneNumber_Ligne >= $Script_LigneNumber_Indique Then ExitLoop
		$LigneNumber_Ligne += 1
	Next
	MsgBox(0, "Numéro de ligne de l'erreur", "Erreur du script ligne : >> " & $i & " <<" & @CRLF & @CRLF & "(Compilée : " & $Script_LigneNumber_Indique & ")" & @CRLF & @CRLF & "Chemin : " & $LigneNumber_Chemin)
	Return ""
EndFunc
Voila j'espère avoir pu aider, ou j'espère que mon explication n'est pas trop compliquée à comprendre.

:bisou:

Re: LigneNumber une fois compilé (proposition de fonction)

Posté : ven. 14 nov. 2025 18:49
par TommyDDR
Ne fonctionne malheureusement pas, (car il ne prend pas en compte les include entre autre)

Re: LigneNumber une fois compilé (proposition de fonction)

Posté : lun. 17 nov. 2025 01:43
par A2Energie
Bonjour Tommy,
merci pour ton intervention :D

Il prend bien en compte les includes grace a la variable $Script_LigneNumber_LigneManuelle
C'est lors du premier lancement du script que l’on configure cette variable pour permettre de prendre en compte les includes.

bien sure, j'utilise tous les jours cette fonction, (donc elle fonctionne)

J'ai peut être mal expliqué comment l’utiliser :
il faut mettre la fonction et son lanceur, juste apres les includes.
Ensuite compiler puis lancer tels quel.
Ca va mettre une erreur (ce qui est normal), le ligne number de l’erreur, il faut l'indiquer en variable : Script_LigneNumber_LigneManuelle, ca permet de prendre en compte les includes.
puis tu peux recompiler et c’est bon, la fonction fonctionne :D