Irgendwo ein Fehler doch wo ?

  • Hallo Leute

    Ich hab wohl irgendwo einen Fehler oder einen Denkfehler denn hier gibt es anscheinen immer nen Error doch ich weis nicht weshalb


    Spoiler anzeigen
    [autoit]

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $dRives

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

    $dRives = DriveGetDrive("fixed")

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

    If $dRives[1] = @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = ("Keine HDD")
    Else
    $dRive1 = $dRives[1] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $Button1 = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Button2", 16, 200, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Button3", 16, 240, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("Button4", 16, 280, 75, 25, 0)
    $Button5 = GUICtrlCreateButton("Button5", 16, 320, 75, 25, 0)
    $Button6 = GUICtrlCreateButton("Button6", 16, 360, 75, 25, 0)
    $Button7 = GUICtrlCreateButton("Button7", 16, 400, 75, 25, 0)
    $Button8 = GUICtrlCreateButton("Button8", 16, 440, 75, 25, 0)
    $Button9 = GUICtrlCreateButton("Button9", 16, 480, 75, 25, 0)
    $Button10 = GUICtrlCreateButton("Button10", 16, 520, 75, 25, 0)
    $Button11 = GUICtrlCreateButton("Button11", 112, 160, 75, 25, 0)
    $Button12 = GUICtrlCreateButton("Button12", 112, 200, 75, 25, 0)
    $Button13 = GUICtrlCreateButton("Button13", 112, 240, 75, 25, 0)
    $Button14 = GUICtrlCreateButton("Button14", 112, 280, 75, 25, 0)
    $Button15 = GUICtrlCreateButton("Button15", 112, 320, 75, 25, 0)
    $Button16 = GUICtrlCreateButton("Button16", 112, 360, 75, 25, 0)
    $Button17 = GUICtrlCreateButton("Button17", 112, 400, 75, 25, 0)
    $Button18 = GUICtrlCreateButton("Button18", 112, 440, 75, 25, 0)
    $Button19 = GUICtrlCreateButton("Button19", 112, 480, 75, 25, 0)
    $Button20 = GUICtrlCreateButton("Button20", 112, 520, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    Er gibt immer nur aus keine HDD jedoch ist C:\ ja definitiv vorhanden sieht jemand den fehler ?

    • Offizieller Beitrag

    Die @error Abfrage ist falsch.

    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2011-06-29 17:14:43
    #EndRegion

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

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $dRives

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

    $dRives = DriveGetDrive("FIXED")

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = ("Keine HDD")
    Else
    $dRive1 = $dRives[1] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $Button1 = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Button2", 16, 200, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Button3", 16, 240, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("Button4", 16, 280, 75, 25, 0)
    $Button5 = GUICtrlCreateButton("Button5", 16, 320, 75, 25, 0)
    $Button6 = GUICtrlCreateButton("Button6", 16, 360, 75, 25, 0)
    $Button7 = GUICtrlCreateButton("Button7", 16, 400, 75, 25, 0)
    $Button8 = GUICtrlCreateButton("Button8", 16, 440, 75, 25, 0)
    $Button9 = GUICtrlCreateButton("Button9", 16, 480, 75, 25, 0)
    $Button10 = GUICtrlCreateButton("Button10", 16, 520, 75, 25, 0)
    $Button11 = GUICtrlCreateButton("Button11", 112, 160, 75, 25, 0)
    $Button12 = GUICtrlCreateButton("Button12", 112, 200, 75, 25, 0)
    $Button13 = GUICtrlCreateButton("Button13", 112, 240, 75, 25, 0)
    $Button14 = GUICtrlCreateButton("Button14", 112, 280, 75, 25, 0)
    $Button15 = GUICtrlCreateButton("Button15", 112, 320, 75, 25, 0)
    $Button16 = GUICtrlCreateButton("Button16", 112, 360, 75, 25, 0)
    $Button17 = GUICtrlCreateButton("Button17", 112, 400, 75, 25, 0)
    $Button18 = GUICtrlCreateButton("Button18", 112, 440, 75, 25, 0)
    $Button19 = GUICtrlCreateButton("Button19", 112, 480, 75, 25, 0)
    $Button20 = GUICtrlCreateButton("Button20", 112, 520, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]
  • naja noch isses leider nicht gelöst so läufts nähmlich nicht :

    Spoiler anzeigen
    [autoit]

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $dRives

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

    $dRives = DriveGetDrive("fixed")

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = ("Keine HDD")
    Else
    $dRive1 = $dRives[1] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive2 = ("Keine HDD")
    Else
    $dRive2 = $dRives[2] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive3 = ("Keine HDD")
    Else
    $dRive3 = $dRives[3] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive4 = ("Keine HDD")
    Else
    $dRive4 = $dRives[4] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive5 = ("Keine HDD")
    Else
    $dRive5 = $dRives[5] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive6 = ("Keine HDD")
    Else
    $dRive6 = $dRives[6] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive7 = ("Keine HDD")
    Else
    $dRive7 = $dRives[7] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive8 = ("Keine HDD")
    Else
    $dRive8 = $dRives[8] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive9 = ("Keine HDD")
    Else
    $dRive9 = $dRives[9] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive10 = ("Keine HDD")
    Else
    $dRive10 = $dRives[10] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive11 = ("Keine HDD")
    Else
    $dRive11 = $dRives[11] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive12 = ("Keine HDD")
    Else
    $dRive12 = $dRives[12] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive13 = ("Keine HDD")
    Else
    $dRive13 = $dRives[13] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive14 = ("Keine HDD")
    Else
    $dRive14 = $dRives[14] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive15 = ("Keine HDD")
    Else
    $dRive15 = $dRives[15] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive16 = ("Keine HDD")
    Else
    $dRive16 = $dRives[16] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive17 = ("Keine HDD")
    Else
    $dRive17 = $dRives[17] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive18 = ("Keine HDD")
    Else
    $dRive18 = $dRives[18] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive19 = ("Keine HDD")
    Else
    $dRive19 = $dRives[19] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive20 = ("Keine HDD")
    Else
    $dRive20 = $dRives[20] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $Button1 = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0)
    $Button2 = GUICtrlCreateButton($dRive2, 16, 200, 75, 25, 0)
    $Button3 = GUICtrlCreateButton($dRive3, 16, 240, 75, 25, 0)
    $Button4 = GUICtrlCreateButton($dRive4, 16, 280, 75, 25, 0)
    $Button5 = GUICtrlCreateButton($dRive5, 16, 320, 75, 25, 0)
    $Button6 = GUICtrlCreateButton($dRive6, 16, 360, 75, 25, 0)
    $Button7 = GUICtrlCreateButton($dRive7, 16, 400, 75, 25, 0)
    $Button8 = GUICtrlCreateButton($dRive8, 16, 440, 75, 25, 0)
    $Button9 = GUICtrlCreateButton($dRive9, 16, 480, 75, 25, 0)
    $Button10 = GUICtrlCreateButton($dRive10, 16, 520, 75, 25, 0)
    $Button11 = GUICtrlCreateButton($dRive11, 112, 160, 75, 25, 0)
    $Button12 = GUICtrlCreateButton($dRive12, 112, 200, 75, 25, 0)
    $Button13 = GUICtrlCreateButton($dRive13, 112, 240, 75, 25, 0)
    $Button14 = GUICtrlCreateButton($dRive14, 112, 280, 75, 25, 0)
    $Button15 = GUICtrlCreateButton($dRive15, 112, 320, 75, 25, 0)
    $Button16 = GUICtrlCreateButton($dRive16, 112, 360, 75, 25, 0)
    $Button17 = GUICtrlCreateButton($dRive17, 112, 400, 75, 25, 0)
    $Button18 = GUICtrlCreateButton($dRive18, 112, 440, 75, 25, 0)
    $Button19 = GUICtrlCreateButton($dRive19, 112, 480, 75, 25, 0)
    $Button20 = GUICtrlCreateButton($dRive20, 112, 520, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Hier ein Beispiel mit einem Array. Es werden nur Buttons erstellt, wenn das dazugehörige Laufwerk auch existiert.

    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2011-06-29 17:43:47
    #EndRegion

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

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    Global $button[21]
    Global $dRives
    $dRives = DriveGetDrive("FIXED")
    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = ("Keine HDD")
    Else
    $dRive1 = $dRives[1] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel("0", 120, 120, 36, 17)
    $button[1] = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0)
    If IsArray($dRives) Then
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    For $i = 1 To $dRives[0]
    If $i < 11 Then
    $button[$i] = GUICtrlCreateButton($dRives[$i], 16, 120 + $i * 40, 75, 25, 0)
    Else

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

    $button[$i] = GUICtrlCreateButton($dRives[$i], 112, 120 + ($i - 10) * 40, 75, 25, 0)
    EndIf
    Next
    EndIf
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • @ Raupi hey das ist ja cool gelöst jedoch bin ich wohl einfach zu dämlich wie mach ich das denn jetzt im case Bereich ? Weil ich kann ja nicht einfach einen Button nehmen der evtl. nicht existiert


    also so fuktioniert es nicht :

    Spoiler anzeigen
    [autoit]

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $button[21]
    Global $dRives

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

    $dRives = DriveGetDrive("FIXED")

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = ("Keine HDD")
    Else
    $dRive1 = $dRives[1] ; ansonsten Name der Festplatte jedoch wird immer ausgegeben keine HDD
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $button[1] = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0)

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

    If IsArray($dRives) Then
    For $i = 1 To $dRives[0]
    If $i < 11 Then
    $button[$i] = GUICtrlCreateButton($dRives[$i], 16, 120 + $i * 40, 75, 25, 0)
    Else

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

    $button[$i] = GUICtrlCreateButton($dRives[$i], 112, 120 + ($i - 10) * 40, 75, 25, 0)
    EndIf
    Next
    EndIf
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button[1]
    _B1 ()
    Case $button[2]
    _B1 ()
    Case $button[3]
    _B1 ()
    Case $button[4]
    _B1 ()
    Case $button[5]
    _B1 ()
    Case $button[6]
    _B1 ()
    Case $button[7]
    _B1 ()
    Case $button[8]
    _B1 ()
    Case $button[9]
    _B1 ()
    Case $button[10]
    _B1 ()
    Case $button[11]
    _B1 ()
    Case $button[12]
    _B1 ()
    Case $button[13]
    _B1 ()
    EndSwitch
    WEnd

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

    Func _B1 ()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Du kannst das z.B. so machen:

    Spoiler anzeigen
    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button[0]
    msgbox(0,"dein button","der von oben bevor du die for schleife durchläufst...")
    Case else
    if ubound($button) > 1 then ; nur wenn du Zusatzbuttons erstellt hast...
    for $i=1 to ubound($button)-1 ; Achtung: ich bin mir nicht sicher ob leere Array Einträge hier Probleme machen. (siehe Anmerkung im Posting)
    if $nMsg=$button[$i] then
    _B1($i) ; wir übergeben den Button index an die Funktion, damit du dort je nach button nr. ggf verschiedene Funktionen aufrufen kannst
    exitloop ; verlässt die for schleife um nicht das ganze array prüfen zu müssen, da der button je bereits gefunden wurde
    endif
    next
    endif
    EndSwitch
    WEnd

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

    Func _B1($index)
    msgbox(0,"Button gedrückt","Du hast Button Nr." & $index & " gedrückt.")
    Exit
    EndFunc

    [/autoit]

    Anmerkung:

    Ich weiss gerade nicht was guigetmsg returned, wenn keine msg in der gui auftritt und ob hier dann evtl die leeren Array Einträge als Treffer erkannt werden. Ich würe das Array button nicht mit fester Größe deklarieren, sondern nur als global $button[1] und dann weiter unten wenn du tatsächlich Buttons erstellst das Array in jedem Schleifendurchlauf um 1 vergrößern. Bsp.:

    [autoit]


    Global $button[1]
    ;...
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $button[0] = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0) ; button index geändert
    ;...
    for $i=1 To $dRives[0]
    redim $button[ubound($button)+1] ; vergrößert dein Array
    $button[$i]=guictrlcreate....
    next

    [/autoit]

    2 Mal editiert, zuletzt von misterspeed (30. Juni 2011 um 01:15)

  • oh man ich blick da gerade echt nicht durch

    der lösungsansatz funktioniert leider überhaupt nicht :

    wenn ich deine änderung 1 zu 1 übernehme wird andauern

    [autoit]

    msgbox(0,"dein button","der von oben bevor du die for schleife durchläufst...")

    [/autoit]


    ausgeführt

    wenn ich (wovon ich dann mal ausgegangen bin)

    [autoit]

    Case $button[0]

    [/autoit]

    auf

    [autoit]

    Case $button[1]

    [/autoit]

    ändere wird angeblich immer Button 6 gedrückt (was komisch ist da ich nur 5 HDD´s habe und somit auch nur 5 Buttons existieren....


    Ich blicke nicht mehr durch...

  • Ja dann musst du wie von mir vermutet eben noch die Änderungen aus meiner Anmerkung vornehmen, d.h. das button array mit größe 1 deklarieren, oben den ersten Button auf button[0] speichern, und in der for schleife zur button erstellung das redim einbauen. Unten die Schleife der GUI sollte dann so funktionieren wie von mir gepostet.

  • Was genau verstehst du denn nicht? Ich habs mir nun doch mal im Scite Editor angeschaut und getestet und dabei festgestellt, dass dieser button[0] überflüssig ist und doppelt erstellt wird. Hier mal das überarbeitete und ausführlich kommentierte Script, dabei hab ich nun btw noch Kleinigkeiten geändert wegen des Buttons den du da ohne die Schleife erstellt hast:

    Spoiler anzeigen
    [autoit]


    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;
    ;
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $button[1] ; Array wird deklariert mit Größe 1, weiter unten erhöhen wir die Größe wenn mehr Buttons benötigt werden
    Global $dRives

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

    $dRives = DriveGetDrive("FIXED")

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = -1 ; verhindert Erstellung der Buttons
    MsgBox(0,"Fehler","Laufwerke konnten nicht ausgelesen werden!")
    Else
    $dRive1 = 1 ; erlaubt Erstellung der Buttons
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 701, 589, 193, 125)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("c by Kenngott Marco (AsusExcite", 528, 560, 161, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel("Windows 7 Ultimate", 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    ;$button[0] = GUICtrlCreateButton($dRive1, 16, 160, 75, 25, 0) ; das hier war irgendwie c:\ wenn ich mich nich irre, wird das aber unten in der Schleife nochmal erstellt

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

    If IsArray($dRives) And $dRive1 = 1 Then
    For $i = 1 To $dRives[0] ; erzeugt für jedes Laufwerk einen Button
    redim $button[ubound($button)+1] ; vergrößert dein Array in jedem Durchlauf der Schleife um 1, damit du immer genau 1 Speicherplatz für die Button Control id frei hast

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

    If $i < 11 Then ; sollte ja klar sein, du erstellst hier die Buttons und speicherst diese in das Array, dabei werden für jeden Durchlauf die Positionen verändert
    $button[$i] = GUICtrlCreateButton($dRives[$i], 16, 120 + $i * 40, 75, 25, 0)
    Else

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

    $button[$i] = GUICtrlCreateButton($dRives[$i], 112, 120 + ($i - 10) * 40, 75, 25, 0)
    EndIf
    Next
    EndIf
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;Case $button[0] ; überflüssig und deswegen entfernt
    ; msgbox(0,"dein button","der von oben bevor du die for schleife durchläufst...")
    Case else ; für alle Nachrichten der GUI, die du nicht explizit in cases abhandelst
    if ubound($button) > 1 then ; nur wenn du Zusatzbuttons erstellt hast, also oben in Zeile 17 / 42 Laufwerke gefunden wurden
    for $i=1 to ubound($button)-1 ; für alle gespeicherte Buttons
    if $nMsg=$button[$i] then ; kommt die GUI Nachricht vom Button der gerade in der Schleife geprüft wird?
    _B1($i) ; wir übergeben den Button index an die Funktion, damit du dort je nach button nr. ggf verschiedene Funktionen aufrufen kannst
    exitloop ; verlässt die for schleife um nicht das ganze array prüfen zu müssen, da der button je bereits gefunden wurde
    endif
    next
    endif
    EndSwitch
    WEnd

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

    Func _B1($index)
    if $index = 1 then return MsgBox(0,"Nix Da!","Laufwerk " & $drives[$index] & " sollst du nicht anklicken..."); Beispiel für eine Sonderbehandlung wenn bestimmter Button gedrückt wurde
    msgbox(0,"Button gedrückt","Du hast Button Nr." & $index & " mit dem Buchstaben " & $drives[$index] & " gedrückt.")
    ;Exit
    EndFunc

    [/autoit]

    4 Mal editiert, zuletzt von misterspeed (30. Juni 2011 um 03:10)

  • vielen dank für die lösung ich hoffe ich habe nicht den eindruck erweckt das ich auf die lösung gewartet habe oder so.

    Und um deine Frage zu beantworten ich habe irgendwie ein Problem mit schleifen ich verstehe sie einfach nicht.... ich habe erst kürzlich angefangen wenigstens ein paar einfache schleifen zu verwenden und ja ich habe mir alle beispiele der Hilfe angesehen, das Wiki Tutorial gelesen und sogar den relevanten teil im buch von pethebe aber ich verstehe sie einfach nicht... Wahrscheinlich übersteigen diese einfach meinen geringen Horizont.

    Ich war mit deinen Angaben völlig überfordert da ich nicht einmal gewusst habe wo ich sie hätte einbauen oder was ich hätte dadurch ersetzen sollen und dann kam von dir auch noch irgendwas mit redim was ich auch noch nie wirklich verstanden habe...

    Naja trotzdem wirklich ein großes danke für die herausragende Hilfe

    Mfg Eistee

    P.s. und wie weise ich jetzt eigentlich funktionen zu ? weil Func B1 is ja eig. nur für den Button 1

  • Naja Schleifen hab ich auch lange Zeit nicht wirklich verstanden, aber wenn mans mal kapiert hat was da passiert ist das wirklich nicht schwer. Vorallem ist es nunmal eine grundlegende Sache die man in jeder Programmiersprache beherschen sollte. Gerade wenn man dynamische GUI's verwendet ist das sehr wichtig. Hier mal ein simples Beispiel, das dir vielleicht hilft die For Schleife zu verstehen:

    Spoiler anzeigen
    [autoit]


    for $i=1 to 4
    msgbox(0,"Durchlauf Nummer " & $i,"Das war der " & $i & ". Durchlauf")
    if $i = 3 then msgbox(0,"Gleich sind wir fertig","Nur noch einmal wird diese Schleife durchlaufen")
    if $i = 4 then msgbox(0,"FERTIG!","Das wars nun aber wirklich, ab hier geht es mit dem Script weiter...")
    next
    msgbox(0,"Beispiel 1 ist vorbei","Wie du siehst wird die Variable $i bei jedem Durchlauf um 1 erhöht und zwar solange bis der definierte Abbruchswert von 4 erreicht wurde. Bei 5 wird die Schleife verlassen")
    #cs
    Bei Arrays macht man sich diese Erhöhung der Variable zu nutze, weil man hier dann die Inhalte des Arrays fortlaufend auslesen oder verändern kann,
    das heisst anstatt eine msgbox anzuzeigen änderst du eben einen Eintrag des Arrays. Im obigen Script von dir speicherst du für jeden Button
    eine Controlid in ein neues Arrayfeld. Diese Id's kannst du dann unten bei der Auswerung der Klicks wieder in Schleifen auslesen
    und Eintrag für Eintrag mit der GUI Nachricht vergleichen.

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

    Bei Arrays verwendet man normalerweise die Funktion ubound() um die Größe des Arrays zu ermitteln und dadurch zu wissen bis wie weit die Schleife laufen darf.
    Der letzte Index eines Arrays ist immer ubound()-1, da Array Index bei 0 starten.

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

    Deklarierst du ein Array mit der Größe 2 dann hat das Array die Felder array[0] und array[1]. ubound würde dir die Größe liefern, also eine 2.
    Wenn du das Array nun in einer Schleife durchgehen willst, dann fängst du mit dem index 0 an und hörst bei index 1 auf.

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

    $letzterIndex = ubound($array)-1 ; in unserem Fall also Index 1, weil 2-1 = 1

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

    for $i = 0 to $letzterIndex
    $array[$i]= .... ; bedeutet, dass wir für jeden der Indexe nun etwas speichern, bis wir bei letzterindex ankommen, danach gehts mit dem Script weiter
    next

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

    Das Selbe wäre wenn du das so schreibst ohne schleife

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

    array[0]="bla"
    array[1]="blabla"

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

    Da das aber sehr viel Schreibarbeit wäre wenn man hunderte Dinge speichern will benutzt man eben Schleifen.

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

    Wenn du nun aber mehr speichern wills als in dein Array reinpasst, dann musst du das Array größer machen. Das macht man mit der Funktion redim.
    Nehmen wir mal an du willst 3 weitere infos speichern, dann machst du dein Array 3 Felder größer als es derzeit ist:

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

    $aktuelleGr=ubound($array)
    redim $array[$aktuelleGr +3] ; was gleichbedeutend mit global $array[5] ist, nur dass du mit global/local oder dim den derzeitigen Inhalt löschen würdest.

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

    In deinem Script erhöhe ich die Array Größe immer nur um 1, da ich dies in der Schleife mache. Man hätte die Arraygröße aber auch vor der Schleife um
    die Gesamtanzahl erhöhen können. Du weisst jedoch erst dann wie groß das Array sein muss, wenn du ermittelt hast wieviele Laufwerke es gibt,
    das wusstest du ganz am Anfang deines Scriptes ja noch nicht.

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

    Du könntest natürlich auch sagen, dass du das Array einfach von Anfang an so groß machst, dass ganz sicher alles reinpasst, also global array[100] oder sowas.
    Das macht dir aber immer dann Probleme wenn du alle Werte die in einem Array gespeichert sind in Schleifen lesen willst, denn du musst dann auch leere Einträge lesen.
    Das hatte sich nicht mit guigetmsg() vertragen, weil ein leerer Eintrag einer 0 entspricht. guigetmsg() ist aber auch 0 wenn gerade nix angeklickt wird,
    also zu 99% der Zeit, deswegen kamen vor dieser Veränderung permanent Meldungen über geklickte Buttons.

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

    #ce

    [/autoit]

    P.s. und wie weise ich jetzt eigentlich funktionen zu ? weil Func B1 is ja eig. nur für den Button 1

    Nunja ich weiss ja jetzt nicht was du machen willst, aber so wie ich das Script verstehe spielt es doch keine Rolle welches Laufwerk du wählst. Du willst doch immer das gleiche mit allen Laufwerken machen, nämlich Informationen zu diesem anzeigen. Also reicht dir doch auch eine Funktion, diese muss nur wissen welches Laufwerk du auslesen willst und das weiss sie schon durch die Übergabe des indexes. Im Beispiel siehst du das ja schön. Anstelle der msgbox machst du eben was du machen möchtest:

    [autoit]


    Func _B1($index)
    $var = DriveSpaceFree($drives[$index] & "\") ; freier Speicherplatz des angeklickten Laufwerks
    MsgBox(4096, "Free space on " & $drives[$index] & "\", $var & " MB")
    ;usw, eben hier dann statt msgboxen die rechte gui hälft mit Daten befüllen, dafür hast du sie ja schliesslich vorgesehen.
    EndFunc

    [/autoit]
  • Danke misterspeed es läuft muss nur noch fileinstalls für die Bilder einfügen aber soweit ist es fertig ^^


    Spoiler anzeigen
    [autoit]

    ;Von Kenngott Marco (Eistee, AsusExcite)
    ;E-Mail : [email='marco.kenngott@live.de'][/email]
    ;
    ;Großes Danke an misterspeed und Raupi(http://www.autoit.de)
    ;
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $button[1] ; Array wird deklariert mit Größe 1, weiter unten erhöhen wir die Größe wenn mehr Buttons benötigt werden
    Global $dRives

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

    $dRives = DriveGetDrive("FIXED")

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

    If @error Then ; Wenn error dann $dRive1 = Keine HDD
    $dRive1 = -1 ; verhindert Erstellung der Buttons
    MsgBox(0, "Fehler", "Laufwerke konnten nicht ausgelesen werden!")
    Else
    $dRive1 = 1 ; erlaubt Erstellung der Buttons
    EndIf

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

    $Form1 = GUICreate("Excite HDD-Information", 700, 588, -1, -1)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("C:\Users\AsusDK\Desktop\ServerClientV1\HDDSpace\0.jpg", 279, 29, 400, 500, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $Group1 = GUICtrlCreateGroup("HDD-Information", 264, 8, 425, 537)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Danke an misterspeed und Raupi (http://www.autoit.de), Von Kenngott Marco (AsusExcite)", 290, 560, 450, 17)
    $Label2 = GUICtrlCreateLabel("Verwendetes Betriebssystem :", 16, 24, 145, 17)
    $Label3 = GUICtrlCreateLabel(@OSVersion, 16, 56, 183, 28)
    GUICtrlSetFont(-1, 16, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    $Label4 = GUICtrlCreateLabel("Datenträger :", 16, 120, 66, 17)
    $Label5 = GUICtrlCreateLabel($dRives[0], 120, 120, 36, 17)
    $Label6 = GUICtrlCreateLabel("Bitte HDD wählen", 500, 103, 150, 46) ;Festplatte
    GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label7 = GUICtrlCreateLabel(" ", 500, 148, 158, 26)
    GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label8 = GUICtrlCreateLabel(" ", 500, 193, 162, 26)
    GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
    GUICtrlSetColor(-1, 0x808080)
    GUICtrlSetBkColor(-1, 0xFFFFFF)

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

    If IsArray($dRives) And $dRive1 <> -1 Then
    For $i = 1 To $dRives[0] ; erzeugt für jedes Laufwerk einen Button
    ReDim $button[UBound($button) + 1] ; vergrößert dein Array in jedem Durchlauf der Schleife um 1, damit du immer genau 1 Speicherplatz für die Button Control id frei hast
    If $i < 11 Then ; sollte ja klar sein, du erstellst hier die Buttons und speicherst diese in das Array, dabei werden für jeden Durchlauf die Positionen verändert
    $button[$i] = GUICtrlCreateButton($dRives[$i], 16, 120 + $i * 40, 75, 25, 0)
    Else
    $button[$i] = GUICtrlCreateButton($dRives[$i], 112, 120 + ($i - 10) * 40, 75, 25, 0)
    EndIf
    Next
    EndIf

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case Else ; für alle Nachrichten der GUI, die du nicht explizit in cases abhandelst
    If UBound($button) > 1 Then ; nur wenn du Zusatzbuttons erstellt hast, also oben in Zeile 17 / 42 Laufwerke gefunden wurden
    For $i = 1 To UBound($button) - 1 ; für alle gespeicherte Buttons
    If $nMsg = $button[$i] Then ; kommt die GUI Nachricht vom Button der gerade in der Schleife geprüft wird?
    _B1($i) ; wir übergeben den Button index an die Funktion, damit du dort je nach button nr. ggf verschiedene Funktionen aufrufen kannst
    ExitLoop ; verlässt die for schleife um nicht das ganze array prüfen zu müssen, da der button je bereits gefunden wurde
    EndIf
    Next
    EndIf
    EndSwitch
    WEnd

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

    Func _B1($index)
    $DSF = DriveSpaceFree($dRives[$index] & "\")
    $DST = DriveSpaceTotal($dRives[$index] & "\")
    $DSFb = StringSplit($DSF, ".")
    $DSTb = StringSplit($DST, ".")
    $DSFc = $DSFb[1] / 1000
    $DSTc = $DSTb[1] / 1000
    $DSFd = StringSplit($DSFc, ".")
    $DSTd = StringSplit($DSTc, ".")
    $DSV1 = $DSTd[1] / 100
    $DSV2 = $DSFd[1] / $DSV1
    $DSV3 = StringSplit($DSV2, '.', 1)

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

    GUICtrlSetData($Label6, $dRives[$index])
    GUICtrlSetData($Label7, "Space : " & $DSTd[1] & " Gb")
    GUICtrlSetData($Label8, "Space free : " & $DSV3[1] & "%")
    GUICtrlSetImage($Pic1, "C:\Excite\Sclient\" & $DSV3[1] & ".jpg")
    EndFunc ;==>_B1

    [/autoit]
  • Danke misterspeed es läuft muss nur noch fileinstalls für die Bilder einfügen aber soweit ist es fertig ^^

    Schau dir mal die Funktion round() an, dann sparste dir dieses Stringsplit.

    [autoit]


    Func _B1($index)
    $DSF = DriveSpaceFree($dRives[$index] & "\")
    $DST = DriveSpaceTotal($dRives[$index] & "\")
    $DSFpercent = $DSF / $DST * 100 ; Prozent errechnen wir aus den exakten ungerundeten Werten, da genauer

    ; nun formatieren wir die werte noch mit round, könnte man btw auch alles in eine zeile schreiben, also round(drivespacefree(....)/1024,0)

    $DSF = Round($DSF/1024,0) ; ducrch 1024 um GB zu erhalten, 0 bedeutet keine Nachkommastellen
    $DST = Round($DST/1024,0) ; ducrch 1024 um GB zu erhalten, 0 bedeutet keine Nachkommastellen
    $DSFpercent = Round($DSFpercent,0) ; keine Nachkommastellen

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

    GUICtrlSetData($Label6, $dRives[$index])
    GUICtrlSetData($Label7, "Space : " & $DST & " Gb")
    GUICtrlSetData($Label8, "Space free : " & $DSFpercent & "%") ; also ich würde zusätzlich zu den Prozent ja auch noch den nutzbaren freien Speicherplatz in GB angeben
    ;GUICtrlSetImage($Pic1, "C:\Excite\Sclient\" & $DSV3[1] & ".jpg") ; ??? ka woher das Bild kommt habs auskommentiert, da das Array aus stringsplit nicht mehr existiert
    EndFunc ;==>_B1

    [/autoit]

    Weitere Verbesserungsvorschläge:

    @OSVersion schaut nicht so toll aus, evtl. solltest du die Rückgabewerte wie WIN_VISTA noch umwandeln in Windows Vista. Ich glaube über die Registry kannst du auch die Edition ermitteln, also Windows Vista Ultimate, aber ist ja nicht so wichtig

    Wenn ich das mit dem Bild recht verstehe hast du für jede % Zahl ein Bild, also 100 Bilder? Das geht auch besser. Mit guictrlcreategraphic oder auch gdi kann man Tortendiagramme zeichnen. Da solltest du dann evtl. noch einen extra Thread aufmachen oder etwas im Forum suchen, müsstest da was zu finden.

  • Zitat

    Wenn ich das mit dem Bild recht verstehe hast du für jede % Zahl ein Bild, also 100 Bilder? Das geht auch besser. Mit guictrlcreategraphic oder auch gdi kann man Tortendiagramme zeichnen. Da solltest du dann evtl. noch einen extra Thread aufmachen oder etwas im Forum suchen, müsstest da was zu finden.

    Ja dein Argument ist verständlich ^^ aber : mit Adobe Photoshop bin ich relativ gut und so ne erstellung von 100 bildern mit berechnungen ist kein allzuschwieriges Problem für mich nur eben aufwendig ^^ und mir geht es ja darum das es danach wirklich nach was aussieht (hänge mal paar bilder an)
    und da ich Gdi+ nicht verstehe und ich die meisten Boardmittel von AutoIt nicht wircklich ansprechend finde muss ich es leider so regeln ^^


    Mfg