#include Func CreateOneFileScript($file) Local $retour = "" If(FileExists($file)) Then Local $tab[1] Local $dir = GetDirFile($file) ConsoleWrite($dir[0] & ", " & $dir[1] & @CRLF) $retour = GetContenu($dir[0], $dir[1], $tab) EndIf Return $retour EndFunc Func GetContenu($dossier, $file, ByRef $includeOnce) Local $retour = "" If(Not(FileExists($dossier & $file))) Then Return $retour Local $includeDir = RegRead("HKLM\SOFTWARE\Wow6432Node\AutoIt v3\AutoIt", "InstallDir") & "\Include\" Local $ligneEcrite Local $contenu = FileRead($dossier & $file) Local $charToFind Local $actualChar Local $commentStart = False Local $readyToWrap Local $tabTemp Local $protectOnce = false Local $canWrite Local $firstWrite = True Local $textLog = " ;|ERROR" & "FILE|" & $dossier & $file & "|" $contenu = StringReplace($contenu, @CRLF, @LF) $contenu = StringSplit($contenu, @LF, 3) For $i = 0 To UBound($contenu, 1)-1 $canWrite = False $ligneEcrite = $contenu[$i] & @CRLF $contenu[$i] = StringTrimSpace($contenu[$i]) If($commentStart) Then If(StringLeft($contenu[$i], 3) == "#ce" Or StringLeft($contenu[$i], 13) == "#comments-end") Then $commentStart = False EndIf ElseIf(StringLeft($contenu[$i], 3) == "#cs" Or StringLeft($contenu[$i], 15) == "#comments-start") Then $commentStart = True ElseIf(StringLeft($contenu[$i], 13) = "#include-once") Then If(AddIncOnce($includeOnce, $dossier & $file) And Not($protectOnce)) Then ExitLoop Else $protectOnce = True EndIf ElseIf(StringLeft($contenu[$i], 8) = "#include") Then $contenu[$i] = StringTrimLeft($contenu[$i], 8) $contenu[$i] = StringTrimSpace($contenu[$i]) Local $fileDir Local $temp If(StringLeft($contenu[$i], 1) = '"') Then $temp = StringSplit($contenu[$i], '"', 3) $fileDir = $dossier & $temp[1] If(Not(FileExists($fileDir))) Then $fileDir = $includeDir & $temp[1] EndIf Else $temp = StringSplit($contenu[$i], "<", 3) $temp = StringSplit($temp[1], ">", 3) $fileDir = $includeDir & $temp[0] If(Not(FileExists($fileDir))) Then $fileDir = $dossier & $temp[0] EndIf EndIf Local $dir = GetDirFile($fileDir) Local $fileContent = GetContenu($dir[0], $dir[1], $includeOnce) If(StringLen($retour) > 0 And StringRight($retour, 3) <> "|" & @CRLF) Then $retour = StringTrimRight($retour, 2) & $textLog & @CRLF EndIf $retour &= $fileContent ElseIf( StringLeft($contenu[$i], 1) <> ";" And _ StringLeft($contenu[$i], 7) <> "#pragma" And _ StringLen($contenu[$i]) > 0) Then $canWrite = True $charToFind = "" $readyToWrap = True For $j = StringLen($ligneEcrite)-2 To 1 Step -1 $actualChar = StringMid($ligneEcrite, $j, 1) If(StringLen($charToFind) > 0) Then ; In String If($actualChar == $charToFind) Then $charToFind = "" EndIf ElseIf($actualChar == '"' Or $actualChar == '"') Then ; String starting $charToFind = $actualChar ElseIf($actualChar == "_" And $readyToWrap) Then ; Wraped line $ligneEcrite = StringLeft($ligneEcrite, $j-1) ElseIf($actualChar == " " Or $actualChar == @TAB) Then ; Ready to wrap (un _ doit être suivi de rien, un espace ou une tabulation) $readyToWrap = True Else ; Not ready to wrap $readyToWrap = False EndIf Next EndIf If($canWrite) Then $retour &= $ligneEcrite $firstWrite = False EndIf Next Return (StringLen($retour) == 0) ? ("") : (StringTrimRight($retour, 2) & $textLog & @CRLF) EndFunc Func AddIncOnce(ByRef $tab, $incOnce) ConsoleWrite($incOnce & " : ") Local $contain = False For $i = 0 To UBound($tab, 1)-2 If($tab[$i] = $incOnce) Then $contain = True ExitLoop EndIf Next If($contain = False) Then $tab[UBound($tab, 1)-1] = $incOnce ReDim $tab[UBound($tab, 1)+1] EndIf ConsoleWrite($contain) ConsoleWrite(@CRLF) Return $contain EndFunc Func StringTrimSpace($ligne) Local $start = StringMid($ligne, 1, 1) While($start = " " Or $start = @TAB) $ligne = StringTrimLeft($ligne, 1) $start = StringMid($ligne, 1, 1) WEnd Return $ligne EndFunc Func GetDirFile($fullPath) Local $dirFileTemp = GetDirFileExt($fullPath) Local $dirFile[2] = [$dirFileTemp[0], $dirFileTemp[1] & $dirFileTemp[2]] Return $dirFile EndFunc Func GetDirFileExt($fullPath) $fullPath = _PathFull($fullPath) Local $drive Local $dossier Local $fileNoExt Local $extention _PathSplit($fullPath, $drive, $dossier, $fileNoExt, $extention) Local $dirFile[3] = [$drive & $dossier, $fileNoExt, $extention] Return $dirFile EndFunc