1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Greenhorn

Beiträge von Greenhorn

  • Auto(It)-Updater

    • Greenhorn
    • 6. Juli 2007 um 00:29

    Hi Bernd,

    zu 1. :

    ...und ich hab' mich schon gewundert warum da nichts geht ! ;) :D
    Vielen Dak für den Bugfix ! =)

    Ja das mit den Hotkeys ist ein wenig verwirrend für mich...

    zu 2. :

    ...Der Updater ist für eine installierte AutoIt Version gedschrieben, die davon ausgeht, dass der Standard Programme Ordner das Installationsverzeichnis enthält.

    Man kann jedoch die Pfade anpassen wenn man möchte.

    Eine portable Version ist in Planung/Arbeit... ;)


    Gruß
    Greenhorn

  • String/Array Problem ?

    • Greenhorn
    • 1. Juli 2007 um 19:50

    Sorry, aber wie meinst Du das ?

    Wo einbinden ?


    Gruß
    Greenhorn

  • Au3Optimizer

    • Greenhorn
    • 30. Juni 2007 um 23:53

    Danke für den Link, Bernd. =)

    Das habe ich schon geahnt, dass es so etwas schon gibt, jedoch wollte ich es trotzdem mit AutoIt versuchen, in kleinem Rahmen... ;)


    Gruß
    Greenhorn

  • Au3Optimizer

    • Greenhorn
    • 30. Juni 2007 um 23:20

    Moin,

    mit diesem Skript kann man seine eigenen Skripte optimieren, soll heißen es werden die Funktionen aus den UDFs extrahiert und in das Quellskript eingefügt, das minimiert die kompilierte exe ein wenig. ;)

    au3Optimizer über's Kontextmenü starten (optional)

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.2.4.9
    Author: Greenhorn

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Registryeinträge für das Kontextmenü. (Optimize Script)

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    RegWrite("HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Optimize Script\Command", _ ; Registryeinträge für das Kontextmenü.
    "", "REG_SZ", '"' & @ProgramFilesDir & "\AutoIt3\au3Optimizer.exe" & '" "%1"') ; au3Optimizer muss im AutoIt3 Ordner zu finden sein.
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    ; Delete Shell Command
    ;RegDelete('HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Optimize Script')

    [/autoit]

    au3Optimizer
    (Enthält zwei UDFs --> Kompilierte Größe: 209.646 KB, unoptimiert: 240.624 KB)

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=D:\Programme\AutoIt3\Au3Optimizer.exe
    #AutoIt3Wrapper_Res_Comment=Includes only the Funktions which are needed to run Script
    #AutoIt3Wrapper_Res_Description=Optimizes your au3 Files
    #AutoIt3Wrapper_Res_Fileversion=0.5.0.1
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.4.9
    Author: Greenhorn

    Script Function:
    AutoIt Code Minimizer.
    Includes only the Funktions which are needed to run Script.

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $cmdline[0] <> 0 Then
    Global $ScriptFile = $cmdline[1]
    Else
    Global $ScriptFile = FileOpenDialog('Select Source Script', _
    'c:\Downloads\AutoIt-Skripte\Entwicklung\ForumTests\', '(*.au3)', 0, 'Source.au3')
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    #region Main
    Global $ArUDF
    Global $StrScriptFile = FileRead(FileOpen($ScriptFile, 0))
    Global $ScriptFunction = _Search_FuncInSource()
    ; Hier würde ich gern @error setzen, funzt aber nicht...
    FileCopy($ScriptFile, StringRegExpReplace($ScriptFile, '.au3', 'Bak.au3'))
    Global $OptScript = FileOpen($ScriptFile, 2)
    FileWrite($OptScript, StringRegExpReplace($StrScriptFile, '(?i)#include[ ]*<[ ]*.*\.au3[ ]*>', ''))
    FileWriteLine($OptScript, '')
    FileWriteLine($OptScript, '#Region User Defiened Funktions')
    _Search_FuncInInclude()
    FileWriteLine($OptScript, '#EndRegion User Defiened Funktions')
    FileClose($OptScript)
    Exit
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Funktions
    ; Search for _Functions in Source File
    Func _Search_FuncInSource()
    $funcs = StringRegExp($StrScriptFile, '_[a-zA-Z0-9]+(?=[ ]*\()', 3)
    If @error = 1 Then
    MsgBox(64, '', 'Das Skript enthält keine benutzerdefinierten Funktionen')
    Exit
    EndIf
    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)
    _Extract_Func()
    EndIf
    Next
    EndFunc ;==>_Search_FuncInInclude
    ; 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
    ConsoleWrite($ArUDF[$i] & @CRLF)
    FileWriteLine($OptScript, $ArUDF[$i])
    $i += 1
    Until StringInStr($ArUDF[$i], 'EndFunc') <> 0
    FileWriteLine($OptScript, $ArUDF[$i])
    FileWriteLine($OptScript, '')
    EndIf
    Next
    Next

    EndFunc ;==>_Extract_Func
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #Region User Defiened Funktions
    Func _FileCreate($sFilePath)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $hOpenFile
    Local $hWriteFile

    [/autoit] [autoit][/autoit] [autoit]

    $hOpenFile = FileOpen($sFilePath, 2)

    [/autoit] [autoit][/autoit] [autoit]

    If $hOpenFile = -1 Then
    SetError(1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $hWriteFile = FileWrite($hOpenFile, "")

    [/autoit] [autoit][/autoit] [autoit]

    If $hWriteFile = -1 Then
    SetError(2)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($hOpenFile)
    Return 1
    EndFunc ;==>_FileCreate

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
    Local $hSearch, $sFile, $asFileList[1]
    If Not FileExists($sPath) Then Return SetError(1, 1, "")
    If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, 8) = "") Then Return SetError(2, 2, "")
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
    $hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
    If $hSearch = -1 Then Return SetError(4, 4, "")
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then
    SetError(0)
    ExitLoop
    EndIf
    If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
    If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
    ReDim $asFileList[UBound($asFileList) + 1]
    $asFileList[0] = $asFileList[0] + 1
    $asFileList[UBound($asFileList) - 1] = $sFile
    WEnd
    FileClose($hSearch)
    Return $asFileList
    EndFunc ;==>_FileListToArray

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileReadToArray($sFilePath, ByRef $aArray)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $hFile

    [/autoit] [autoit][/autoit] [autoit]

    $hFile = FileOpen($sFilePath, 0)

    [/autoit] [autoit][/autoit] [autoit]

    If $hFile = -1 Then
    SetError(1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aArray = StringSplit(StringStripCR(FileRead($hFile, FileGetSize($sFilePath))), @LF)

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($hFile)
    Return 1
    EndFunc ;==>_FileReadToArray

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion User Defiened Funktions

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Jetzt müsste ich den Code im Hauptskript etwas übersichtlicher gestalten und überflüssige Leerzeilen entfernen, ist irgendwie 'n ganz schönes Kuddelmuddel...

    Gruß
    Greenhorn

  • String/Array Problem ?

    • Greenhorn
    • 30. Juni 2007 um 21:16

    Weit bin ich noch nicht gekommen, aber hier hat sich schon mal der Quellcode selbst optimiert... ;)

    Ich weiss noch nicht wie ich das ganze verpacken will/soll, als GUI oder als .exe mit Parametern ?!?
    Vielleicht beides oder ein Mix daraus...

    au3Optimizer über's Kontextmenü starten (optional)

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.2.4.9
    Author: Greenhorn

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Registryeinträge für das Kontextmenü. (Optimize Script)

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    RegWrite("HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Optimize Script\Command", _ ; Registryeinträge für das Kontextmenü.
    "", "REG_SZ", '"' & @ProgramFilesDir & "\AutoIt3\au3Optimizer.exe" & '" "%1"') ; au3Optimizer muss im AutoIt3 Ordner zu finden sein.
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    ; Delete Shell Command
    ;RegDelete('HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Optimize Script')

    [/autoit]

    au3Optimizer
    (Enthält zwei UDFs --> Kompilierte Größe: 209.646 KB, unoptimiert: 240.624 KB)

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=D:\Programme\AutoIt3\Au3Optimizer.exe
    #AutoIt3Wrapper_Res_Comment=Includes only the Funktions which are needed to run Script
    #AutoIt3Wrapper_Res_Description=Optimizes your au3 Files
    #AutoIt3Wrapper_Res_Fileversion=0.5.0.1
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.4.9
    Author: Greenhorn

    Script Function:
    AutoIt Code Minimizer.
    Includes only the Funktions which are needed to run Script.

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $cmdline[0] <> 0 Then
    Global $ScriptFile = $cmdline[1]
    Else
    Global $ScriptFile = FileOpenDialog('Select Source Script', _
    'c:\Downloads\AutoIt-Skripte\Entwicklung\ForumTests\', '(*.au3)', 0, 'Source.au3')
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    #region Main
    Global $ArUDF
    Global $StrScriptFile = FileRead(FileOpen($ScriptFile, 0))
    Global $ScriptFunction = _Search_FuncInSource()
    ; Hier würde ich gern @error setzen, funzt aber nicht...
    FileCopy($ScriptFile, StringRegExpReplace($ScriptFile, '.au3', 'Bak.au3'))
    Global $OptScript = FileOpen($ScriptFile, 2)
    FileWrite($OptScript, StringRegExpReplace($StrScriptFile, '(?i)#include[ ]*<[ ]*.*\.au3[ ]*>', ''))
    FileWriteLine($OptScript, '')
    FileWriteLine($OptScript, '#Region User Defiened Funktions')
    _Search_FuncInInclude()
    FileWriteLine($OptScript, '#EndRegion User Defiened Funktions')
    FileClose($OptScript)
    Exit
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Funktions
    ; Search for _Functions in Source File
    Func _Search_FuncInSource()
    $funcs = StringRegExp($StrScriptFile, '_[a-zA-Z0-9]+(?=[ ]*\()', 3)
    If @error = 1 Then
    MsgBox(64, '', 'Das Skript enthält keine benutzerdefinierten Funktionen')
    Exit
    EndIf
    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)
    _Extract_Func()
    EndIf
    Next
    EndFunc ;==>_Search_FuncInInclude
    ; 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
    ConsoleWrite($ArUDF[$i] & @CRLF)
    FileWriteLine($OptScript, $ArUDF[$i])
    $i += 1
    Until StringInStr($ArUDF[$i], 'EndFunc') <> 0
    FileWriteLine($OptScript, $ArUDF[$i])
    FileWriteLine($OptScript, '')
    EndIf
    Next
    Next

    EndFunc ;==>_Extract_Func
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #Region User Defiened Funktions

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
    Local $hSearch, $sFile, $asFileList[1]
    If Not FileExists($sPath) Then Return SetError(1, 1, "")
    If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, 8) = "") Then Return SetError(2, 2, "")
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
    $hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
    If $hSearch = -1 Then Return SetError(4, 4, "")
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then
    SetError(0)
    ExitLoop
    EndIf
    If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
    If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
    ReDim $asFileList[UBound($asFileList) + 1]
    $asFileList[0] = $asFileList[0] + 1
    $asFileList[UBound($asFileList) - 1] = $sFile
    WEnd
    FileClose($hSearch)
    Return $asFileList
    EndFunc ;==>_FileListToArray

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileReadToArray($sFilePath, ByRef $aArray)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $hFile

    [/autoit] [autoit][/autoit] [autoit]

    $hFile = FileOpen($sFilePath, 0)

    [/autoit] [autoit][/autoit] [autoit]

    If $hFile = -1 Then
    SetError(1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aArray = StringSplit(StringStripCR(FileRead($hFile, FileGetSize($sFilePath))), @LF)

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($hFile)
    Return 1
    EndFunc ;==>_FileReadToArray

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion User Defiened Funktions

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Jetzt müsste ich den Code im Hauptskript etwas übersichtlicher gestalten und überflüssige Leerzeilen entfernen, ist irgendwie 'n ganz schönes Kuddelmuddel...

    Gruß

  • String/Array Problem ?

    • Greenhorn
    • 30. Juni 2007 um 19:29

    Ja die Zeilen sollen gelöscht werden...

    Die Definition funzt hervorragend ! =)
    Vielleicht begreife ich die Zeichensetzung ja irgendwann... ;)

    Jetzt muss ich mein/unser Stückwerk erstmal aufarbeiten.
    Das grobe Gerüst steht, auch wenn etwas umständlich, aber es funzt erstmal.
    Vieleicht frage ich dich noch mal nach verbesserungsvorschlägen, wenn Du erlaubst...


    Gruß

  • String/Array Problem ?

    • Greenhorn
    • 30. Juni 2007 um 18:32

    Jetzt möchte ich gern mit StringRegExpReplace den String '#include <Xxx.au3>' entfernen, jetzt weiss ich nicht wie ich es definieren soll, oder es liegt an den Zeichen < und > ?!

    Etwa so... StringRegExpReplace($StrScriptFile, '#include <[A-Za-z].au3>, '')'
    Oder wie muss ich es definieren ???

    Gruß

  • String/Array Problem ?

    • Greenhorn
    • 30. Juni 2007 um 18:10

    Läuft prima ! Danke Mega !

    Aber wieso muss ich ConsoleWrite benutzen, oder lag's an der Pfadangabe zur Opt.au3 ???

    Mit StringRegExp habe ich probleme sobald ich unbekannte/breit gestreute Pattern brauche.
    So wie Du ($funcs = StringRegExp($StrScriptFile, '_[a-zA-Z0-9]+(?=[ ]*\()', 3)) kriege ich das noch nicht hin ! :(
    Mein Programmierstil ist noch zu umständlich und oftmals auch zu unlogisch/verworren. :baby:

    Aber wer weiss, kann ja alles noch kommen... ;)


    Gruß
    Greenhorn

  • String/Array Problem ?

    • Greenhorn
    • 30. Juni 2007 um 01:57

    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
    [autoit]

    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit]


    Gruß
    Greenhorn

  • _Funktionen in Skript suchen...

    • Greenhorn
    • 28. Juni 2007 um 20:51

    Um die Katze aus dem Sack zu lassen..., ich möchte einen AutoIt Code Optimizer schreiben, der nur die Funktionen "inkludiert" die im Skript benötigt werden.
    Sollte eigentlich funktionieren, rein theoretisch... ;)

    Ich weiß, AutoIt bringt soetwas bestimmt schon mit, aber ich will es trotzdem tun, weil ich dachte ich lerne dann ein wenig mehr über UDFs und ihren Aufbau...


    Gruß
    Greenhorn

    Edit: Danke dir, so langsam dämmert es mir...

  • _Funktionen in Skript suchen...

    • Greenhorn
    • 28. Juni 2007 um 20:44

    Meinetwegen ich möchte eine Funktion wie _ArrayUnique schreiben...

    Jetzt steht da in den Klammern eine oder mehrere Variablen/Werte.
    Wie baue ich das auf ? Woher weiß ich, dass ich mehrere Optionen in die Klammer schreiben muss und ob es ein integer oder ein string sein muss/soll ?

    Wenn ich mir manchmal UDFs ansehe und sie versuche nachzuvollziehen, dann hakt's aus.
    Mich verwirren auch die Operatoren ByRef und BitOr.
    Wann oder bzw. wofür brauche/benötige ich diese...
    Ich bin mir über den Zweck icht ganz bewusst (Hilfe ist auch etwas sporadisch dazu...)

    Kann ich schwer erklären, aber ich hoffe Du verstehst ungefähr was ich meine... ;)
    Was macht $Delim = '', und was $iBase = 1 usw.


    Gruß
    Greenhorn

  • _Funktionen in Skript suchen...

    • Greenhorn
    • 28. Juni 2007 um 20:25

    Hya-Boosa...

    Da hast Du mir aber was hingezaubert =).

    1ooo Dank Mega ! Das sieht schon ganz anders aus, als mein wackeliger Versuch... ;)
    @TO ??? Höre ich zum ersten mal...
    Was ist denn das ?

    Gruß
    Greenhorn

    [Offtopic]
    Hat nicht jemand Lust ein kleines Tutorial über UDFunktionen zu schreiben ?
    Ich meine über Aufbau und Rückgabewerte.
    Das verstehe ich manchmal nicht so recht: Wenn ich Wert(e) in die Klammern einbeziehe, wie muss dann der Rückgabewert sein.
    Oder besser gesagt, die Variablen in den Klammern und die zurückzugebenden Variablen/Werte. Da hakt meine Logik ein bisschen aus..., und die Hilfe bietet nur ein sehr einfaches Beispiel an.
    [/Offtopic]

  • _Funktionen in Skript suchen...

    • Greenhorn
    • 28. Juni 2007 um 18:38

    Moin,

    ich bin's nur..., mal wieder mit 'nem Knoten im Hirn.

    Also, ich möchte ein Skript nach allen UDFunktionen durchsuchen und diese angezeigt bekommen.

    Ich bekomme auch etwas zu sehen, nur leider nicht das was ich mir erhoff(t)e...
    Edit: Läuft jetzt soweit, bis auf die kleinigkeit, dass der Rückgabewert von _StringBetween nicht so richtig will...
    Wenn ich FoundFunc[0] benutzen will kommt der Fehler, dass ich mit einer Non-Array Variablen arbeiten will, jedoch lässt sich der Wert nur mit _ArrayDisplay anzeigen, ergo ist es doch ein Array, auch wenn es nur einen Wert enthält, oder ???

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $ScriptFile, $ArScriptFile, $x
    Dim $ArScriptFileFunktions[1]

    [/autoit] [autoit][/autoit] [autoit]

    $ScriptFile = FileOpenDialog('Select Source Script', @MyDocumentsDir, '(*.au3)', 0, 'Source.au3')

    [/autoit] [autoit][/autoit] [autoit]

    ;Search for _Functions in Source File

    [/autoit] [autoit][/autoit] [autoit]

    If Not _FileReadToArray($ScriptFile, $ArScriptFile) Then
    MsgBox(4096, "Error", 'Es konnte keine Datei eingelesen werden !')
    EndIf

    For $i = 1 To $ArScriptFile[0]
    $ScriptFileFunktion = StringRegExp($ArScriptFile[$i], '[_]' & '[:alpha:]', 1)
    If @extended Then
    $FoundFunc = _StringBetween($ArScriptFile[$i], ' _', '(')
    _ArrayDisplay($FoundFunc) ; Bis hierhin läufts...
    _ArrayAdd($ArScriptFileFunktions, $FoundFunc[0]) ; Hier gibt's einen fetten Error.
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($ArScriptFileFunktions) ; Hier gibt's nur Nullen zu sehen...

    [/autoit]

    Was mache ich denn nun wieder falsch... ? ?(


    Gruß
    Greenhorn

    P.s.: Ist bestimmt wieder nur so ein Dummy-Fehler den ich einfach nicht sehe... !?! X(

  • Aero Glass für xp *Tip*

    • Greenhorn
    • 24. Juni 2007 um 17:26

    Moin,

    ein geniales und sehr kleines Tool um den Aero Glass Fenstereffekt für xp zu erzielen ist [COLOR="Lime"]Vystal[/COLOR] ! :cool:

    Es ist allerdings noch in der Entwicklerphase und könnte noch den einen oder anderen Bug enthalten... :rolleyes:

    Aber die Mühen scheinen sich zu lohnen wie man am Screenshot erkennen kann.

    [Blockierte Grafik: http://xs216.xs.to/xs216/07250/backgroundjf4.jpg]

    System requirements
    OS:
    2000/2003/XP/Vista
    Video Card:
    nVidia GeForce 2 series
    or higher
    Processor:
    Inel Pentium II, 233 MHz
    or higer
    RAM:
    256 MB, DDR2


    [Blockierte Grafik: http://xs216.xs.to/xs216/07250/neu2oy4.png]

    Homepage
    https://autoit.de/&quot;http://www.vystal.de.vu/&quot;


    Gruß
    Greenhorn

    __________

  • wichtige Nachricht.... in e-Mail-Postfach

    • Greenhorn
    • 24. Juni 2007 um 17:14
    Zitat

    Original von Gun-Food
    Das Problem ist, dass das Board bisher keine Überprüfung auf sichere Kennwörter enthält. Und natürlich gibt es ein tägliches Backup der Datenbank und auch der Seite selbst. Leider würden dabei auch dieLogs überschrieben,was mir die Beweislegung bei der Anzeige massiv erschweren würde. Zumindest, wenn ich nicht gerade zu Hause am Rechner sitze und vorher ein Backup der Logs machen kann.
    Ich hoffe ja, dass wir in nächster Zeit auf die neue Version upgraden können. Leider erscheint ja bisher nur ein Release Candidate nach dem anderen. Naja kommt Zeit kommt Rat.

    Warum steigt ihr dann nicht um auf vBulletin, ist 'ne geile Foren-Software...

    Gruß
    Greenhorn

  • wichtige Nachricht.... in e-Mail-Postfach

    • Greenhorn
    • 23. Juni 2007 um 16:42

    Habe auch diese Mail bekommen. Aber der Titel hat ja schon alles ausgesagt: "autoid.de wurde gehackt" !

    Ich glaube die Admins wissen wie man autoit.de schreibt und meine natürliche Paranoia hat mich die Mail gleich löschen lassen.

    Ich frage mich wie kommt er (der Hacker) ausgerechnet auf dieses Board ?

    @GunFood
    Wenn Du die Seite neu aufsetzt, dann sorge doch bitte dafür, dass bei der Anmeldung nur sichere Kennwörter zugelassen werden !
    Desweiteren solltest Du regelmässig Backups vom Board machen, am besten täglich. Dann hast Du nicht soviel Arbeit, falls es noch einmal jemandem gelingt einzudringen.


    Gruß
    Greenhorn

  • Scite - wurde was beim kompilieren geändert?

    • Greenhorn
    • 23. Juni 2007 um 00:07

    Hi,

    öffne die au3.properties im SciTE-Verzeichnis und suche nac:

    Code
    # Commands to compile / run your script
    command.go.$(file.patterns.au3)="$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "$(FilePath)" /autoit3dir "$(autoit3dir)" /UserParams $(1) $(2) $(3) $(4)
    ;command.go.$(file.patterns.au3)="$(autoit3dir)\autoit3.exe" /ErrorStdOut "$(FilePath)" $(1) $(2) $(3) $(4)
    command.go.subsystem.$(file.patterns.au3)=1
    command.compile.$(file.patterns.au3)="$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper_Gui.exe" /in "$(FilePath)"
    command.compile.filter.$(file.patterns.au3)=1
    command.build.$(file.patterns.au3)="$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /CompileDefaults /in "$(FilePath)" /autoit3dir "$(autoit3dir)"
    command.build.filter.$(file.patterns.au3)=1
    #~ #command.build.$(file.patterns.au3)="$(autoit3dir)\aut2exe\aut2exe.exe" /in "$(FilePath)"

    Da tauschst Du dann

    Code
    command.compile.$(file.patterns.au3)="$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper_Gui.exe" /in "$(FilePath)"

    gegen

    Code
    command.compile.$(file.patterns.au3)="$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper.exe" /in "$(FilePath)"

    Gruß
    Greenhorn

  • Upload und Uploadstatus in einer EXE

    • Greenhorn
    • 22. Juni 2007 um 00:21

    Hi,

    habe mal versucht 'ne Funktion zu schreiben..., kein Plan ob's funzt (sehr wahrscheinlich nicht).
    Falls sich jemand in der Materie auskennt, kann er die Funktion ja weiterentwickeln...
    http://msdn2.microsoft.com/en-us/library/ms918386.aspx
    http://msdn2.microsoft.com/en-us/library/ms918385.aspx

    Damit sollte es möglich sein den Uploadprogress hinzukriegen...

    Spoiler anzeigen
    [autoit]


    ;===============================================================================
    ;
    ; Function Name: _INTERNET_STATUS_CALLBACK()
    ; Description: This function is a prototype for an application-defined status callback function.
    ; Parameter(s): $l_HInternet - Handle for which the callback function is being called.
    ; $dw_Context - Address of an unsigned long integer value that contains
    ; the application-defined context value associated with the hInternet parameter.
    ; $dw_InternetStatus - Unsigned long integer value that contains the status code that indicates
    ; why the callback function is being called. The following table shows the values
    ; for this parameter.
    ; $lpv_StatusInformation - Address of a buffer that contains information pertinent
    ; to this call to the callback function.
    ; $dwStatusInformationLength - Unsigned long integer value that contains the size, in TCHARs,
    ; of the lpvStatusInformation buffer.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Greenhorn
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _INTERNET_STATUS_CALLBACK($l_HInternet, $dw_Context, $dw_InternetStatus, $lpv_StatusInformation, $dwStatusInformationLength)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_INTERNET_STATUS_CALLBACK = DllCall('wininet.dll', 'int', 'INTERNET_STATUS_CALLBACK', 'long', $l_HInternet, 'udword', $dw_Context, 'udword', $dw_InternetStatus, 'ptr', $lpv_StatusInformation, 'udword', $dwStatusInformationLength)
    If @error OR $ai_INTERNET_STATUS_CALLBACK[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_INTERNET_STATUS_CALLBACK[0]

    EndFunc ;==> _INTERNET_STATUS_CALLBACK()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _InternetSetStatusCallback()
    ; Description: This function sets up a callback function that WinInet functions can call as progress is made during an operation.
    ; Parameter(s): $l_HInternet - Handle for which the callback is to be set.
    ; $lpfn_InternetCallback - Long pointer to the callback function
    ; to call when progress is made, or to
    ; return NULL to remove the existing callback function.
    ; For more information about the callback function, see INTERNET_STATUS_CALLBACK.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Greenhorn
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _InternetSetStatusCallback($l_HInternet, $lpfn_InternetCallback)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_InternetSetStatusCallback = DllCall('wininet.dll', 'int', 'InternetSetStatusCallback', 'long', $l_HInternet, 'long_ptr', $lpfn_InternetCallback)
    If @error OR $ai_InternetSetStatusCallback[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetSetStatusCallback[0]

    EndFunc ;==> _InternetSetStatusCallback()

    [/autoit]


    Gruß
    Greenhorn

    Edit: Falls es jemand hinbekommt, bitte PN an mich.
    Würde mich freuen...

  • Auto(It)-Updater

    • Greenhorn
    • 20. Juni 2007 um 20:13

    JAU !!! das ist es ! :klatschen:

    Nochmals vielen Dank, Eddy ! Du hast mir ein weiteres mal bei einem schier unlösbarem Problem den Knoten in der Birne gelöst... :D

    Jetzt ist es genauso, wie ich es haben wollte: Bei jedem Start dabei und vollautomatisch *ÜberwältigtBin*

    Werde vielleicht noch ein paar kleine Optionen einbasteln, z.B. für DL der .zip's usw. ...


    Bis denne ;)
    Greenhorn

  • Auto(It)-Updater

    • Greenhorn
    • 20. Juni 2007 um 19:22

    Aaaah, die Parameter waren es die fehlten...

    1ooo Dank Eddy, funktioniert auch..., fast ! :D

    Wenn ich nun ein Script per Kontextmenü editieren oder öffnen will, dann öffnet SciTE die Datei mit doppeltem bzw. mit doppelt/geteiltem Pfad !!!
    Dann kann ich über Scite aber alles öffnen...

    Öffnen per Kontextmenü:
    (achte auf die Pfade im Fenstertitel und die Dateinamen !!!)

    [Blockierte Grafik: http://xs216.xs.to/xs216/07253/Look_1.png]

    [Blockierte Grafik: http://xs216.xs.to/xs216/07253/Look_2.png]

    Öffnen mit SciTE:

    [Blockierte Grafik: http://xs216.xs.to/xs216/07253/Look_3.png]

    Komisch nicht ?
    Erst die Datei "E:\AutoIt", dann die Datei "E:\AutoIt Projekte\Auto(It)-Updater\Projekte\Auto(It)-Updater\test.au3" !!!

    Irgendwie mag er das Leerzeichen im Pfad nicht und er macht ihn doppelt... :irre:

    Hmmmmm. *grübel*


    Gruß
    Greenhorn

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™