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

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

Posté : lun. 17 nov. 2025 23:05
par TommyDDR
Ok, je viens de comprendre.

Pourquoi ne pas aller chercher les include et regarder le contenu via le script ? (comme ça, plus besoin de cette variable)

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

Posté : mar. 18 nov. 2025 09:07
par A2Energie
Oui c'est largement faisable, j'avais simplement la flême.
Je penses que je le ferais à l'avenir et je ferais une update du code pour simplifier son installation.

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

Posté : mar. 18 nov. 2025 15:53
par TommyDDR
Ahah, c'est une réponse valable, je comprends :P

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

Posté : mar. 09 déc. 2025 19:42
par louiseravot
Salut !

Merci pour le partage, c’est clair et bien expliqué.
Ton compteur de ligne semble pratique pour retrouver facilement la ligne exacte d’erreur dans SciTE-Lite, surtout pour ceux qui veulent éviter les solutions trop complexes.