Script-Fehlermeldung: Hilfe, sehe den Wald vor lauter Bäumen nicht mehr ...

  • Hallo & guten Abend,
    ich habe ein Autoit-Skript, welches mir folgende Fehlermeldung bringt:

    >"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Examples\xxx1.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
    +>22:37:01 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 3 CPU:X64 OS:X86)
    >Running AU3Check (1.54.19.0) from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Examples\xxx1.au3(204,42) : WARNING: $SW_HIDE: possibly used before declaration.
    _WinAPI_ShowWindow($hProgress, $SW_HIDE)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\xxx1.au3(206,42) : WARNING: $SW_SHOW: possibly used before declaration.
    _WinAPI_ShowWindow($hProgress, $SW_SHOW)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\xxx1.au3(204,42) : ERROR: $SW_HIDE: undeclared global variable.
    _WinAPI_ShowWindow($hProgress, $SW_HIDE)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\xxx1.au3 - 1 error(s), 2 warning(s)
    !>22:37:01 AU3Check ended.rc:2
    >Running:(3.3.6.1):C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Examples\xxx1.au3"
    +>22:37:24 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 24.881

    Das deutet für mich darauf hin, daß ein INCLUDE fehlt, aber meiner Meinung nach ist dieser drin. Werde ich etwa (berufs)blind? :D

    Ich füge mal das Script ein, vllt. ist ja einer oder mehrere so nett und schauem Mal nach, Danke im voraus.

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ComboConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #include <Constants.au3>
    #include <ProgressConstants.au3>
    #include <HeaderConstants.au3>
    #include <WinAPI.au3>
    #include <IE.au3>
    #include <String.au3>

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

    GUICreate("listview items",920,260, 100,200,-1)
    ;GUISetBkColor (0x00E0FFFF)
    local $hProgress[200]
    Local $aProgress[100][100]

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

    $swds = _RecursiveFileListToArray("c:\xpcd\software", "", 2, 1, @CRLF)

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

    $listview = GUICtrlCreateListView ("col1 |col2|col3 | col4|col5|col6|col7|col8|Status", 10, 10, 850, 250)
    GUICtrlSetColor(-1, 0x0000A0)
    ;GUICtrlSetBkColor(-1, 0xBBCCEE)
    ;$button = GUICtrlCreateButton ("bCol Item2", 75, 170, 70, 20)
    ; $item1=GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    ;GUICtrlSetColor(-1, 0x007000)
    ;GUICtrlSetBkColor(-1, 0xEE9999)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 20)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 6, 30)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 7, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 8, 100)
    _GUICtrlListView_BeginUpdate($listview)
    for $i = 1 to UBound($swds)-1

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

    $hProgress[$i] = _ListView_InsertProgressBar($ListView, $i, 9)

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

    $helparray = DirGetSize ( $swds[$i] , 1 )

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

    ;_ArrayDisplay($helparray, "Directories:")
    $item2=GUICtrlCreateListViewItem(StringReplace($swds[$i], "\", "|"), $listview)
    If $helparray[2] = 0 Then
    GUICtrlSetColor($item2, 0x007000)
    GUICtrlSetData($item2, "||||||-->|bereit zum installieren")
    Else
    GUICtrlSetColor($item2, 0xEE9999)
    EndIf

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

    Next
    _GUICtrlListView_EndUpdate($listview)

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

    GUISetState()

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

    Do
    $msg = GUIGetMsg ()

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

    Select
    ; Case $msg = $button
    ;~ MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
    ; GUICtrlSetBkColor($item2, 0x00008B)
    Case $msg = $listview
    MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE

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

    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
    ; einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc

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

    ; #FUNCTION# ======================================================================================
    ; Function Name: _ListView_InsertProgressBar()
    ; Description: Inserts a progressbar control in the ListView control.
    ; Syntax.........: _ListView_InsertProgressBar($sHwnd, $sItemIndex[, $sSubItemIndex])
    ; Parameter(s): $sHwnd - Handle to the ListView control.
    ; $sItemIndex - Zero based index of the item at which the progressbar should be inserted.
    ; $sSubItemIndex - [Optional] One based index of the subitem where progressbar should be placed, default is 1.
    ;
    ; Return Value(s): Returns the identifier (controlID) of the new progressbar control.
    ; Requirement(s): AutoIt 3.2.10.0 and above
    ; Note(s): Optimal amount of progressbar controls is 5-10. Don`t abuse with many amount of progressbar controls.
    ;
    ; Author(s): R.Gilman (a.k.a rasim), arcker
    ;==================================================================================================
    Func _ListView_InsertProgressBar($sHwnd, $sItemIndex, $sSubItemIndex = 0)
    If Not IsHWnd($sHwnd) Then $sHwnd = GUICtrlGetHandle($sHwnd)

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

    Local $iStyle = _WinAPI_GetWindowLong($sHwnd, $GWL_STYLE)

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

    If BitAND($iStyle, $WS_CLIPCHILDREN) <> $WS_CLIPCHILDREN Then
    _WinAPI_SetWindowLong($sHwnd, $GWL_STYLE, BitOR($iStyle, $WS_CLIPCHILDREN))
    EndIf

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

    Local $aRect

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

    If $sSubItemIndex = 0 Then
    $aRect = _GUICtrlListView_GetItemRect($sHwnd, $sItemIndex, 2)
    Else
    $aRect = _GUICtrlListView_GetSubItemRect($sHwnd, $sItemIndex, $sSubItemIndex)
    EndIf

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

    $aProgress[0][0] += 1
    ReDim $aProgress[$aProgress[0][0] + 1][4]
    $aProgress[$aProgress[0][0]][0] = _Progress_Create($sHwnd, $aRect[0], $aRect[1], $aRect[2] - $aRect[0], $aRect[3] - $aRect[1])

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

    $aProgress[$aProgress[0][0]][1] = $sItemIndex
    $aProgress[$aProgress[0][0]][2] = $sSubItemIndex
    $aProgress[$aProgress[0][0]][3] = $sHwnd

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

    Return $aProgress[$aProgress[0][0]][0]
    EndFunc ;==>

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

    Func _Progress_Create($hWnd, $iX, $iY, $iWidth = -1, $iHeight = -1, $iStyle = 0, $iExStyle = 0)
    $iStyle = BitOR($iStyle, $WS_CHILD, $WS_VISIBLE)
    Return _WinAPI_CreateWindowEx($iExStyle, "msctls_progress32", "", $iStyle, $iX, $iY, $iWidth, $iHeight, $hWnd)
    EndFunc ;==>_Progress_Create

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

    Func _ListView_Notify($hWnd, $Msg, $wParam, $lParam)
    If $Msg = $WM_SIZE Then
    _WinAPI_InvalidateRect($hWnd)
    Return $GUI_RUNDEFMSG
    EndIf

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

    Local $tNMHEADER, $hWndFrom, $iCode, $i

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

    $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
    $hWndFrom = DllStructGetData($tNMHEADER, "hwndFrom")
    $iCode = DllStructGetData($tNMHEADER, "Code")

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

    Switch $iCode
    Case $HDN_ITEMCHANGED, $HDN_ITEMCHANGEDW, $LVN_ENDSCROLL
    If $iCode <> $LVN_ENDSCROLL Then $hWndFrom = _WinAPI_GetParent($hWndFrom)

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

    For $i = 1 To $aProgress[0][0]
    If $aProgress[$i][3] = $hWndFrom Then _
    _MoveProgress($hWndFrom, $aProgress[$i][0], $aProgress[$i][1], $aProgress[$i][2])
    Next

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

    _WinAPI_InvalidateRect($hWndFrom)
    EndSwitch

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

    Return $GUI_RUNDEFMSG
    EndFunc ;==>_ListView_Notify

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

    Func _MoveProgress($hListView, $hProgress, $sItemIndex, $sSubItemIndex)
    Local $aRect

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

    If $sSubItemIndex = 0 Then
    $aRect = _GUICtrlListView_GetItemRect($hListView, $sItemIndex, 2)
    Else
    $aRect = _GUICtrlListView_GetSubItemRect($hListView, $sItemIndex, $sSubItemIndex)
    EndIf

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

    If $aRect[1] < 10 Then
    _WinAPI_ShowWindow($hProgress, $SW_HIDE)
    ElseIf $aRect[1] >= 10 Then
    _WinAPI_ShowWindow($hProgress, $SW_SHOW)
    EndIf

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

    _WinAPI_MoveWindow($hProgress, $aRect[0], $aRect[1], $aRect[2] - $aRect[0], $aRect[3] - $aRect[1], True)
    EndFunc ;==>_MoveProgress

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

    ; #FUNCTION# ====================================================================================================
    ; Description ...: Sets the color of the indicator bar
    ; Parameters ....: $hWnd - Handle to the control
    ; $iColor - The new progress indicator bar color. Specify the CLR_DEFAULT value to cause the progress bar
    ; +to use its default progress indicator bar color.
    ; Return values .: Success - The previous progress indicator bar color, or CLR_DEFAULT if the progress indicator bar color
    ; +is the default color.
    ; Author ........: Paul Campbell (PaulIA), Updated By Arcker
    ; Remarks .......: This message is supported only in the Windows Classic theme
    ; Related .......:
    ; ====================================================================================================
    Func _Progress_SetBarColor($hWnd, $iColor)
    Return _SendMessage($hWnd, $PBM_SETBARCOLOR, 0, $iColor)
    EndFunc ;==>_Progress_SetBarColor

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

    ; #FUNCTION# ====================================================================================================
    ; Description ...: Sets the current position
    ; Parameters ....: $hWnd - Handle to the control
    ; $iPos - The new position
    ; Return values .: Success - The previous position
    ; Author ........: Paul Campbell (PaulIA), Updated By Arcker
    ; Remarks .......:
    ; Related .......: _Progress_GetPos
    ; ====================================================================================================
    Func _Progress_SetPos($hWnd, $iPos)
    Return _SendMessage($hWnd, $PBM_SETPOS, $iPos, 0)
    EndFunc ;==>_Progress_SetPos

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

    ; #FUNCTION# ====================================================================================================
    ; Description ...: Sets the background color in the progress bar
    ; Parameters ....: $hWnd - Handle to the control
    ; $iColor - The new background color. Specify the CLR_DEFAULT value to cause the progress bar to use its
    ; +default background color.
    ; Return values .: Success - The previous background color, or CLR_DEFAULT if the background color is the default color.
    ; Author ........: Paul Campbell (PaulIA), Updated By Arcker
    ; Remarks .......: This message is supported only in the Windows Classic theme
    ; Related .......:
    ; ====================================================================================================
    Func _Progress_SetBkColor($hWnd, $iColor)
    Return _SendMessage($hWnd, $PBM_SETBKCOLOR, 0, $iColor)
    EndFunc ;==>_Progress_SetBkColor

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

    ; #FUNCTION# ====================================================================================================

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

    ; Description ...: Specifies the step increment
    ; Parameters ....: $hWnd - Handle to the control
    ; $iStep - Step increment.
    ; Return values .: Success - The previous step increment
    ; Author ........: Paul Campbell (PaulIA)
    ; Remarks .......: The step increment is the amount by which the progress bar increases its current position whenever you use the
    ; _Progress_StepIt function. By default, the step increment is set to 10.
    ; Related .......: _Progress_StepIt
    ; ====================================================================================================
    Func _Progress_SetStep($hWnd, $iStep = 10)
    Return _SendMessage($hWnd, $PBM_SETSTEP, $iStep, 0)
    EndFunc ;==>_Progress_SetStep

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

    ; #FUNCTION# ====================================================================================================
    ; Description ...: Advances the current position by the step increment
    ; Parameters ....: $hWnd - Handle to the control
    ; Return values .: Success - The previous position
    ; Author ........: Paul Campbell (PaulIA), Updated By Arcker
    ; Remarks .......:
    ; Related .......: _Progress_SetStep
    ; ====================================================================================================
    Func _Progress_StepIt($hWnd)
    Return _SendMessage($hWnd, $PBM_STEPIT, 0, 0)
    EndFunc ;==>_Progress_StepIt

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

    ; #FUNCTION# ====================================================================================================
    ; Description ...: Delete the progressbar control
    ; Parameters ....: $hWnd - Handle to the control
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........: G. Sandler (MrCreatoR), Updated by rasim
    ; Remarks .......:
    ; Related .......: _Progress_SetStep
    ; ====================================================================================================
    Func _Progress_Delete($hWnd)
    Local $aTmpArr[1][3]

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

    For $i = 1 To $aProgress[0][0]
    If $aProgress[$i][0] <> $hWnd Then
    $aTmpArr[0][0] += 1
    ReDim $aTmpArr[$aTmpArr[0][0] + 1][4]

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

    $aTmpArr[$aTmpArr[0][0]][0] = $aProgress[$i][0]
    $aTmpArr[$aTmpArr[0][0]][1] = $aProgress[$i][1]
    $aTmpArr[$aTmpArr[0][0]][2] = $aProgress[$i][2]
    $aTmpArr[$aTmpArr[0][0]][3] = $aProgress[$i][3]
    EndIf
    Next

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

    $aProgress = $aTmpArr

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

    Local $aResult = DllCall("User32.dll", "int", "DestroyWindow", "hwnd", $hWnd)
    If @error Then Return SetError(1, 0, 0)

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

    Return $aResult[0] <> 0
    EndFunc ;==>_Progress_Delete

    [/autoit]

    Einmal editiert, zuletzt von fschaef (10. Juni 2010 um 09:03)

  • Achja ich würde die Schleife so machen.

    Spoiler anzeigen
    [autoit]

    _GUICtrlListView_BeginUpdate($listview)
    for $i = 1 to $swds[0]

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

    $hProgress[$i - 1] = _ListView_InsertProgressBar($ListView, $i - 1, 8)
    _Progress_SetPos($hProgress[$i - 1], Random(1, 50, 1)) ; zum Testen
    $helparray = DirGetSize($swds[$i] , 1)

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

    ;_ArrayDisplay($helparray, "Directories:")
    $item2=GUICtrlCreateListViewItem(StringReplace($swds[$i], "\", "|"), $listview)
    If $helparray[2] = 0 Then
    GUICtrlSetColor($item2, 0x007000)
    GUICtrlSetData($item2, "||||||-->|bereit zum installieren")
    Else
    GUICtrlSetColor($item2, 0xEE9999)
    EndIf

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

    Next
    _GUICtrlListView_EndUpdate($listview)

    [/autoit]

  • Super, ne Ahnung, warum die Progressbars so planlos herumhängen und nicht in der 8. Spalte (Status)?

    Einmal editiert, zuletzt von fschaef (10. Juni 2010 um 09:22)