Moin,
ich verstehe mal wieder gar nichts mehr...
Mein Skript soll Funktionen die in einem AutoItScript genutzt werden aus den UDF kopieren und in eine Datei schreiben.
Der SyntaxCeck ist i.O., Return ist 0, aber es wird nichts in die Datei geschrieben.
Bin ich schon wieder zu unlogisch ???
Spoiler anzeigen
#include <Array.au3>
#include <File.au3>
Global $ArUDF
Global $ScriptFile = FileOpenDialog('Select Source Script', 'c:\Downloads\AutoIt-Skripte\Entwicklung\ForumTests\', '(*.au3)', 0, 'Source.au3')
Global $StrScriptFile = FileRead(FileOpen($ScriptFile, 0))
Global $ScriptFunction = _Search_FuncInSource()
Global $OptScript = FileOpen('Opt.au3', 1)
;_ArraySort($ScriptFunction)
;_ArrayDisplay($ScriptFunction)
_Search_FuncInInclude()
;Search for _Functions in Source File
Func _Search_FuncInSource()
$funcs = StringRegExp($StrScriptFile, '_[a-zA-Z0-9]+(?=[ ]*\()', 3)
Return _ArrayUnique($funcs)
EndFunc ;==>_Search_FuncInSource
Func _ArrayUnique(ByRef $aArray, $vDelim = '', $iBase = 1, $iUnique = 1)
If $vDelim = '' Then $vDelim = Chr(01)
Local $sHold
For $iCC = $iBase To UBound($aArray) - 1
If Not StringInStr($vDelim & $sHold, $vDelim & $aArray[$iCC] & $vDelim, $iUnique) Then _
$sHold &= $aArray[$iCC] & $vDelim
Next
Return StringSplit(StringTrimRight($sHold, StringLen($vDelim)), $vDelim)
EndFunc ;==>_ArrayUnique
; Search and extract Functions from UDF file
Func _Search_FuncInInclude()
$ArFiles = _FileListToArray(@ProgramFilesDir & '\AutoIt3\Include', '*.au3', 1)
For $i = 1 To $ArFiles[0]
If StringInStr($StrScriptFile, $ArFiles[$i]) Then
_FileReadToArray(@ProgramFilesDir & '\AutoIt3\Include\' & $ArFiles[$i], $ArUDF)
FileWriteLine($OptScript, '')
_Extract_Func()
EndIf
Next
EndFunc
; Extract Function and writes to file
Func _Extract_Func()
For $i = 1 To $ArUDF[0]
For $int = 0 To UBound($ScriptFunction)-2
If StringInStr($ArUDF[$i], 'Func ' & $ScriptFunction[$int]) Then
Do
FileWriteLine($OptScript, $ArUDF[$i])
$i += 1
Until StringInStr($ArUDF[$i], 'EndFunc') <> 0
FileWriteLine($OptScript, $ArUDF[$i])
FileWriteLine($OptScript, '')
EndIf
Next
Next
EndFunc
Gruß
Greenhorn