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. draien

Beiträge von draien

  • Regeln für den „AI Fight“ Wettbewerb

    • draien
    • 22. Januar 2015 um 13:50
    Zitat von ShitDown

    draien >> Wie meinst du das mit „aufzeichnen“? Zu jeder Spielrunde wird eine Log-Datei mit allen Spielaktionen der AI's erstellt. Diese können dann in der mitgelieferten GUI abgespielt werden um die absolvierten Runden der Auswertung nachzuprüfen bzw. anzusehen.

    Achso okay, dann habe ich das wohl falsch verstanden gehabt. Passt alles soweit :)

  • Regeln für den „AI Fight“ Wettbewerb

    • draien
    • 22. Januar 2015 um 13:19

    Regeln finde ich sehr gut ausgearbeitet und werde das Newcomer Angebot definitive in Anspruch nehmen müssen :D
    Reserviere mir mal $Drabot_[...] und _Drabot_[...]()

    Hab noch ein Vorschlag:
    Man könnte die Spielrunden und die Umgebung aufzeichnen/streamen und ein kleines Event daraus machen :)

  • Script um einen Namen einzugeben und den entsprechenden Namen aus einer Tabelle auszugeben

    • draien
    • 22. Januar 2015 um 09:45

    Nein ganz und gar nicht. Der Array ist deine Datenbasis(welche auch die Relation zw. neuen und alten Namen darstellt).
    Zuerst einmal brauchst du eine GUI mit einer InputBox. Ich verwende hierzu immer den KodaDesigner (Tastenkombi: Alt+m). Die könnte dann so aussehen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $mGui = GUICreate("Druckersuche", 340, 60, 192, 124)
    $I_Drucker = GUICtrlCreateInput("", 10, 30, 145, 21)
    $B_Drucker = GUICtrlCreateButton("Neuen Drucker suchen", 200, 20, 129, 33)
    $L_Drucker = GUICtrlCreateLabel("Alter Druckername", 10, 10, 100, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

    [/autoit]

    Jetzt brauchst du nur noch eine Funktion, die den Namen in der InputBox nimmt(bzw. an jene übergeben wird) und den dazugehörigen neuen Namen ausgibt. Die könnte dann so aussehen:

    Spoiler anzeigen
    [autoit]

    Func _Druckersuche($sAlterName)
    For $x = 0 To Ubound($aDrucker)-1
    If $sAlterName = $aDrucker[$x][0] Then ;Überprüft ob x-tes Element im Array dem alten Namen entspricht
    Return $aDrucker[$x][1] ;Gibt den neuen Namen (1. Spalte) zurück
    EndIf
    Next

    Return 0 ;Wenn nichts gefunden wird, gibt 0 zurück
    EndFunc

    [/autoit]

    Jetzt brauchst du nur noch die MsgBox, die aufgerufen wird. Diese könnte man in die While-Schleife der GUI platzieren und die Abfrage könnte so aussehen:

    Spoiler anzeigen
    [autoit]

    If $sNeuerName Then
    MsgBox(0,"Gefunden!","Der Neue lautet: " & $sNeuerName)
    Else
    MsgBox(0,"Fehler","Kein Drucker gefunden (Input überprüfen)")
    EndIf

    [/autoit]

    Jetzt musst du die Sachen nur noch zusammenbauen (mit dem ersten Script im vorherigen Posting) und richtig zuordnen und dann dürfte das klappen.
    Solltest du es nicht schaffen, gibste einfach nochmal bescheid :)

    Edit: Das Programm funktioniert aber nur dann wenn du auch die Excel Tabelle hast, wenn du das Programm jemand anderem geben willst, ohne Excel-Datei, dann musst du entweder alle Daten exportieren, oder von Hand (vielleicht mit AutoIt :P?) in den Code einfügen als Array.

  • Status eines Fensters abfragen

    • draien
    • 21. Januar 2015 um 14:02

    Hallo :)

    Wenn das Fenster wirklich nicht gehandled werden kann, stellt sich die Frage ob ImageSearch für dich in Frage kommt. (Screenshot des "Sichern" Buttons nachdem gesucht warden soll)?

    Grüße

  • Script um einen Namen einzugeben und den entsprechenden Namen aus einer Tabelle auszugeben

    • draien
    • 21. Januar 2015 um 13:51

    Aus alten Zeiten:
    Musst nur die Pfadangabe oben ändern und achtung: die erste Zeile im Array (Row[0]) war bei mir immer leer, wusste nich woran es lag, da habe ich im Excelsheet eine neue Ziele ganz oben eingefügt (leer) und dann im Array spatter die erste wieder rausgelöscht. (_ArrayDelete). Musste evtl. selbst irgendwie lösen.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Excel.au3>

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

    Global $aDrucker[1][2]
    Global $xlsPath = "U:\...\Drucker.xlsx" ;Pfadangabe zur Excel

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

    $aAlteDrucker = _ReadFromExcel("A") ; A = 1. Spalte / alte Druckernamen
    _AddToArray($aDrucker,$aAlteDrucker,0)
    $aNeueDrucker = _ReadFromExcel("B") ; B = 2. Spalte / neue Druckernamen
    _AddToArray($aDrucker,$aneueDrucker,1)

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

    _ArrayDisplay($aDrucker)

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

    ;Paste a 1D Array($iArray) to a 2D Array($oArray) in a certain column($column)
    Func _AddToArray(ByRef $oArray, $iArray, $column)

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

    For $i = 1 To UBound($iArray) -1

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

    $rows = UBound($oArray, 1)
    $columns = UBound($oArray, 2)
    If $rows <= $i Then ReDim $oArray[$rows+1][$columns]
    $oArray[$i][$column] = $iArray[$i]
    Next

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

    EndFunc
    ;Copy a certain column from Excel sheet to an Array
    Func _ReadFromExcel($column)
    Local $data

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

    Local $oExcel = _Excel_Open()
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Open", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $oWorkbook = _Excel_BookOpen($oExcel, $xlsPath)
    If @error Then
    Switch @error
    Case 2
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen", "Specified Filepath does not exist" & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Case 3
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen", "Error opening the selected Excel file." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Case 4
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen", "Readwrite access could not be granted. Workbook might be open by another users/task." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    EndSwitch

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

    ProcessClose("EXCEL.exe")
    Else
    $data = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.ActiveSheet.Usedrange.Columns($column & ":" & $column), 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    EndIf

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

    Return $data
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Script kürzen durch Array?

    • draien
    • 21. Januar 2015 um 13:33
    Zitat von baerchen

    Oke das habe ich soweit verstanden, aber wie optimiere ich jetzt die eigenschaften, das habe ich noch nicht so verstanden.

    Rechtsklick -> Eigenschaften -> Optimieren klicken...

    Spoiler anzeigen


    Spaß beiseite. Was meinst du mit optimieren? Wie oben: Was meinst du mit kürzen? Was genau willst du haben/machen?

  • vergleichen von 2 .txt Dateinen

    • draien
    • 21. Januar 2015 um 13:30

    So wie ich es verstanden habe sollte es so klappen:

    Spoiler anzeigen
    [autoit]

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

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

    $aGroups = FileReadToArray("C:\Users\admin\Desktop\gruppen.txt")
    $iLines = _FileCountLines("C:\Users\admin\Desktop\D.txt")
    $bFound = False

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

    For $y = 0 To Ubound($aGroups)-1
    For $x = 0 to $iLines
    $sDaten = FileReadLine("C:\Users\admin\Desktop\D.txt",$x)
    If StringInStr($sDaten,$aGroups[$y]) Then
    $iErgebnisLine = $x - 4
    $bFound = True
    ExitLoop
    EndIf
    Next

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

    If $bFound Then
    MsgBox(0,"Gefunden!","Die Vierte Zeile über " & $aGroups[$y] & " lautet: " & FileReadLine("C:\Users\admin\Desktop\D.txt",$iErgebnisLine))
    EndIf
    Next

    [/autoit]
  • Umfrage - Wettbewerb >> AI vs AI

    • draien
    • 21. Januar 2015 um 12:07

    Hallo zusammen,
    Bin zwar meistens nur am lurken hier und selten am schreiben, aber so ein Wettbewerb würde mich auch reizen :)

  • Script kürzen durch Array?

    • draien
    • 21. Januar 2015 um 12:06

    Was genau möchtest du kürzen? Die Codelänge/Anzahl der Zeichen, die Anzahl der Anweisungen,...?
    Generell kannst du alles kürzen was sich durch eine andere Funktion ausdrücken lässt (For-Schleife sofern auf Basis einer mathematischen Grundlage/Reihe) oder eben oft auftritt, wie z.b. deine Labels Attribute im GUI Bereich (GUICtrlSetColor(-1, 0xFF0000)). So könntest du diese Labels in ein Array überführen, und für jedes Element diese Funktion aufrufen. Ich verwende hierzu immer oft extra Funktionen, da die lesbarkeit oft bei Kürzungen leidet , um wenigstens noch etwas den Überblick zu behalten:

    Spoiler anzeigen
    [autoit]


    $a[0] = GUICtrlCreateButton("Kampf!", 24, 168, 75, 25)
    $a[1] = GUICtrlCreateLabel("Sträke: " & $eos, 16, 24, 101, 17)
    $a[2] = GUICtrlCreateLabel("Hirn: " & $eoh, 16, 40, 95, 17)
    $a[3] = GUICtrlCreateLabel("Pech: " & $eop, 16, 56, 101, 17)
    $a[4] = GUICtrlCreateLabel("Money: " & $eomony, 16, 144, 101, 17)
    $a[5] = GUICtrlCreateLabel("EXP: " & $eoexp, 16, 128, 96, 17)
    _ColorizeLabels($a,0xFF0000)

    [/autoit]

    Und die Funktion:

    Spoiler anzeigen
    [autoit]


    ;Färbt übergebenen Array $a in $color
    Func _ColorizeLabels($a,$color)
    For $x = 0 To Ubound($a) -1
    GUICtrlSetColor($a[$x], $color)
    Next
    EndFunc ;==> _ColorizeLabels

    [/autoit]


    So musst du für die 4 Varianten (Ork/Troll) nur jeweils _ColorizeLabels aufrufen, dürfte so etwa 25 Zeilen einsparen.
    Dann könnte man bei

    Spoiler anzeigen
    [autoit]


    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()

    [/autoit]


    weitermachen nach den Case-Überprüfungen, auch wieder durch eine Funktion (_ShowWinText?).
    Aber ich denke es ware generell kürzer, anstatt zig Variablen für jedes Attribut (EinfachOrk-Hirn) zu erstellen, für jeden Gegner ein Array mit all sienen Attributen zu erstellen, oder für jedes Attribut ein Array. Aber das ist nur meine Meinung

  • Statisches Label

    • draien
    • 19. Januar 2015 um 14:12

    Getreu dem Motto: Alle Wege führen nach Rom:
    Ich habe dir hier eine GUI aus dem englischen Forum(vielen Dank Taietel!), welches Panels benutzt.
    Diese GUI hat mir echt geholfen, gerade bei solchen Dingen. Vielleicht hilft sie dir ja auch :)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #region GLOBAL VARIABLES
    Global $iW = 600, $iH = 400, $iT = 52, $iB = 52, $iLeftWidth = 150, $iGap = 10, $hMainGUI
    #endregion GLOBAL VARIABLES

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

    _MainGui()

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

    Func _MainGui()
    Local $hFooter, $nMsg, $aPos
    Local $iLinks = 5
    Local $sMainGuiTitle = "Sample Title"
    Local $sHeader = "Sample GUI"
    Local $sFooter = "2012 © AutoIt"
    Local $aLink[$iLinks], $aPanel[$iLinks]
    $aLink[0] = $iLinks - 1
    $aPanel[0] = $iLinks - 1
    $hMainGUI = GUICreate($sMainGuiTitle, $iW, $iH, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_TABSTOP))
    GUISetIcon("shell32.dll", -58, $hMainGUI)

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

    GUICtrlCreateLabel($sHeader, 48, 8, $iW - 56, 32, $SS_CENTERIMAGE)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial", 5)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    GUICtrlCreateIcon("shell32.dll", -131, 8, 8, 32, 32)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUICtrlCreateLabel("", 0, $iT, $iW, 2, $SS_SUNKEN);separator
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)
    GUICtrlCreateLabel("", $iLeftWidth, $iT + 2, 2, $iH - $iT - $iB - 2, $SS_SUNKEN);separator
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH)
    GUICtrlCreateLabel("", 0, $iH - $iB, $iW, 2, $SS_SUNKEN);separator
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)

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

    $hFooter = GUICtrlCreateLabel($sFooter, 10, $iH - 34, $iW - 20, 17, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    GUICtrlSetTip(-1, "AutoIt Forum", "Click to open...")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)

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

    ;add links to the left side
    $aLink[1] = _AddNewLink("Link 1")
    $aLink[2] = _AddNewLink("Link 2", -167)
    $aLink[3] = _AddNewLink("Link 3", -222)
    $aLink[4] = _AddNewLink("Link 4", -22)
    ;and the corresponding GUI's
    $aPanel[1] = _AddNewPanel("Title for the panel 1")
    $aPanel[2] = _AddNewPanel("Title for the panel 2")
    $aPanel[3] = _AddNewPanel("Title for the panel 3")
    $aPanel[4] = _AddNewPanel("Title for the panel 4")

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

    ;add some controls to the panels
    _AddControlsToPanel($aPanel[1])
    GUICtrlCreateEdit("", 10, 37, $iW - $iLeftWidth + 2 - 20 - 5, $iH - $iT - $iB - 40, BitOR($ES_AUTOVSCROLL, $ES_NOHIDESEL, $ES_WANTRETURN, $WS_VSCROLL), $WS_EX_STATICEDGE)
    Local $sTestTxt = ""
    For $i = 1 To 10
    $sTestTxt &= @TAB & "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum felis lectus, pharetra vel laoreet nec, pulvinar nec justo. Donec malesuada, nunc eu faucibus sodales, diam sem tempor neque, id condimentum turpis nunc vel lacus. Nulla a nulla libero, eget eleifend dolor. Vivamus volutpat tincidunt ultricies. Vestibulum eu libero nisi, quis tincidunt nisi. Proin tincidunt, ipsum ullamcorper posuere venenatis, libero nulla venenatis enim, ultrices tincidunt ipsum arcu nec turpis. In at erat sed ipsum gravida mattis in at felis. Vivamus diam purus, dictum ut luctus vitae, sollicitudin ut velit. Maecenas velit mauris, fringilla ut condimentum bibendum, aliquam a neque. Nulla metus eros, commodo id dictum in, interdum sed ipsum. Vivamus feugiat, mi at auctor fringilla, libero lectus vulputate tortor, eu sollicitudin nulla lacus at neque." & @CRLF
    $sTestTxt &= @TAB & "Sed vel ante magna. Curabitur porttitor ante in tellus bibendum non tristique diam volutpat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In tellus lectus, ultrices in tempus eget, sollicitudin quis eros. Curabitur at arcu bibendum massa feugiat euismod at a felis. Nunc molestie, enim non ornare tincidunt, ipsum nisi tempus sapien, quis elementum elit velit ut neque. Suspendisse eu adipiscing risus. Nam tempor odio ut elit auctor rhoncus. Etiam viverra elit id felis feugiat pellentesque pretium porttitor dui. Vivamus eu quam non ante suscipit vehicula a nec eros. Phasellus congue massa sed libero interdum ullamcorper. Quisque fringilla massa ut lorem fringilla pulvinar eget ullamcorper eros. Praesent faucibus, erat at consequat tempus, nulla erat sodales mi, eget sagittis nibh erat nec nunc. Phasellus risus nibh, porta viverra pretium nec, vehicula eget nisi." & @CRLF
    $sTestTxt &= @TAB & "Sed vel neque vel urna elementum accumsan feugiat quis mauris. Sed mi nisl, consequat dapibus molestie ac, rutrum ut elit. Praesent sed risus sem. Mauris rutrum blandit magna nec tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse consequat iaculis odio nec cursus. Duis varius tincidunt ligula ac ultricies. Ut eget magna in nulla vulputate dapibus ut vel sem. Integer ac tempor risus." & @CRLF
    $sTestTxt &= @TAB & "Maecenas molestie semper turpis, id tristique nibh pharetra eget. Aliquam erat volutpat. In egestas, lorem quis varius vestibulum, enim diam porta lorem, quis dictum arcu ante a diam. Nullam vel nisi mauris. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam ut leo purus, eget vulputate augue. Fusce et est sagittis felis accumsan sollicitudin eget a lectus. Cras sapien sapien, rutrum eu tempor non, tempor nec velit. Vivamus interdum adipiscing felis in malesuada. Fusce quis purus est, eget molestie turpis. In hac habitasse platea dictumst." & @CRLF
    $sTestTxt &= @TAB & "Aenean eleifend risus vitae lorem laoreet facilisis. Suspendisse ac urna quam, vel rutrum sem. Sed bibendum porta tellus malesuada scelerisque. Vestibulum at ligula sed nulla sollicitudin tincidunt. Pellentesque mi magna, vulputate et aliquam a, auctor et nunc. Phasellus feugiat fringilla accumsan. Donec ultrices, elit id dapibus auctor, nunc odio viverra lorem, non commodo mi libero a libero. Cras vitae felis venenatis augue laoreet tincidunt scelerisque id odio. Proin lorem purus, molestie feugiat pretium nec, ornare aliquam turpis. "
    Next
    GUICtrlSetData(-1, $sTestTxt)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)

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

    _AddControlsToPanel($aPanel[2])
    GUICtrlCreateLabel("Label1", 8, 38, 36, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    Local $hInput1 = GUICtrlCreateInput("Input1", 56, 35, 121, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    Local $hButton1 = GUICtrlCreateButton("Button1", 200, 33, 75, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    _AddControlsToPanel($aPanel[3])
    GUICtrlCreateList("", 8, 37, 121, 93, -1, 0)
    GUICtrlSetData(-1, "dfgdfg|ertert|kljlkj|poipoi|qweqwe")
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    _AddControlsToPanel($aPanel[4])
    GUICtrlCreateGroup("Group1", 8, 35, 129, 90)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    Local $aChkBox[4]
    For $i = 1 To 3
    $aChkBox[$i] = GUICtrlCreateRadio("Some radio " & $i, 16, 56 + ($i - 1) * 20, 113, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    Next
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    ;set default to Panel1
    GUISwitch($aPanel[1])
    ;show the main GUI
    GUISetState(@SW_SHOW, $hMainGUI)

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

    While 1
    Sleep(10)
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
    Case $hMainGUI
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_MINIMIZE, $GUI_EVENT_MAXIMIZE, $GUI_EVENT_RESTORE
    $aPos = WinGetPos($hMainGUI)
    $iW = $aPos[2]
    $iH = $aPos[3]
    For $i = 0 To $aPanel[0]
    WinMove($aPanel[$i], "", $iLeftWidth + 2, $iT, $iW - $iLeftWidth + 2, $iH - $iT - $iB - 20)
    Next
    Case $aLink[1], $aLink[2], $aLink[3], $aLink[4]
    For $i = 1 To $aLink[0]
    If $nMsg[0] = $aLink[$i] Then
    GUISetState(@SW_SHOW, $aPanel[$i])
    Else
    GUISetState(@SW_HIDE, $aPanel[$i])
    EndIf
    Next
    Case $hFooter
    EndSwitch
    Case $aPanel[2]
    Switch $nMsg[0]
    Case $hButton1
    MsgBox(32, "Test", "You have " & GUICtrlRead($hInput1) & "?")
    EndSwitch
    Case $aPanel[4]
    Switch $nMsg[0]
    Case $aChkBox[1], $aChkBox[2], $aChkBox[3]
    For $i = 1 To 3
    If GUICtrlRead($aChkBox[$i]) = $GUI_CHECKED Then MsgBox(64, "Test", "You checked nr. " & $i & "!")
    Next
    EndSwitch
    EndSwitch
    WEnd
    EndFunc ;==>_MainGui

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

    Func _AddNewLink($sTxt, $iIcon = -44)
    Local $hLink = GUICtrlCreateLabel($sTxt, 36, $iT + $iGap, $iLeftWidth - 46, 17)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUICtrlCreateIcon("shell32.dll", $iIcon, 10, $iT + $iGap, 16, 16)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $iGap += 22
    Return $hLink
    EndFunc ;==>_AddNewLink

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

    Func _AddNewPanel($sTxt)
    Local $gui = GUICreate("", $iW - $iLeftWidth + 2, $iH - $iT - $iB, $iLeftWidth + 2, $iT, $WS_CHILD + $WS_VISIBLE, -1, $hMainGUI)
    GUICtrlCreateLabel($sTxt, 10, 10, $iW - $iLeftWidth - 20, 17, $SS_CENTERIMAGE)
    GUICtrlSetFont(-1, 9, 800, 4, "Arial", 5)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    Return $gui
    EndFunc ;==>_AddNewPanel

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

    Func _AddControlsToPanel($hPanel)
    GUISwitch($hPanel)
    EndFunc ;==>_AddControlsToPanel

    [/autoit]
  • Funktion die gedrückte/losgelassene Taste zurückgibt?

    • draien
    • 17. Januar 2015 um 15:30

    @chesstiger :
    So wie ich das verstanden habe, würde es nur funktionieren, solange das Fenster im Fokus steht. Aber die Methode gefällt mir irgendwie :)

    @Kanashius :
    Das mit dem Array habe ich auch überlegt gehabt, aber könnte bei einer großen Anzahl an Tasten (nicht alle) sehr Ressourcenfressend sein, bzw. zu einem Delay führen oder? Trotzdem werde ich die Methode vorerst mal verwenden und ggf. verbessern, danke :)

    Vielleicht werde ich auch beide Methoden irgendwie verknüpfen. Aber danke dafür vorerst

    (Hat jemand eine Antwort auf die Off-Topic frage :P?)

  • Funktion die gedrückte/losgelassene Taste zurückgibt?

    • draien
    • 17. Januar 2015 um 13:19

    Hallo zusammen,
    Hab etwas gesucht aber nichts gefunden, was mein Problem beheben könnte. Ich habe hier ein Script geschrieben, dass mir einen Tastendruck visuell darstellt. Problem ist nur:
    Wenn man Q drückt (wird Q grün),lässt sich W nicht drücken (bleibt rot). Das liegt an dem While _IsKeyPressed -> Sleep. Das ist mir bekannt. Wie könnte ich das umgehen? (will ja nicht endlos verschachteln,bei allen Tasten auf der Tastatur).
    Habe mir ein/zwei Lösungen überlegt:

    • Funktion die zurückgibt, wenn eine Taste gedrückt UND losgelassen wird, ohne die Verwendung der im Script beschriebenen While-Schleife
    • GuiCtrlSetBkColor($Q,0x00FF00) nur temporär gültig (also auf Rot zurückspringen, ohne die Angabe von GuiCtrlSetBkColor($Q,0xFF0000))

    Leider konnte ich besagte Lösungen nicht finden. Oder habt ihr noch eine andere Idee?

    Hier das Script:

    Spoiler anzeigen
    [autoit]

    #Region ### START INCLUDES ###
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    #EndRegion ### END INCLUDES ###

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

    #Region ### START GLOBAL VARIABLES ###
    Global $hDLL = DllOpen("user32.dll")
    #EndRegion ### END GLOBAL VARIABLES ###

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 125, 74, 192, 124)
    $Q = GUICtrlCreateButton("Q", 0, 0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFF0000)
    $W = GUICtrlCreateButton("W", 20, 0, 20, 20)
    GUICtrlSetBkColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    DllClose($hDLL)
    Exit

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

    EndSwitch

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

    If _IsPressed("51", $hDLL) Then
    GuiCtrlSetBkColor($Q,0x00FF00)
    ; Wait until key is released.
    While _IsPressed("51", $hDLL)
    Sleep(100)
    WEnd
    GuiCtrlSetBkColor($Q,0xFF0000)
    EndIf

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

    If _IsPressed("57", $hDLL) Then
    GuiCtrlSetBkColor($W,0x00FF00)
    ; Wait until key is released.
    While _IsPressed("57", $hDLL)
    Sleep(100)
    WEnd
    GuiCtrlSetBkColor($W,0xFF0000)
    EndIf

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

    WEnd

    [/autoit]

    Off-Topic: Wie stell ich diesen Windows-sound *ding* aus, bei "illegalem" Tastendruck :D?

    Bin für alles offen :)
    Grüße

  • !Mehrere! Datein per FTP-Downloaden mit Progressbar

    • draien
    • 16. Januar 2015 um 15:23

    Hi,

    Möchtest du jedes mal eine neue ProgressBar für eine neue Datei erstellen, oder eine ProgressBar, die den gesamten Status anzeigt, haben?
    Bei ersterem würde ich nach erfolgreichem Download einer Datei

    [autoit]

    _UpdateProgress(0)

    [/autoit]


    aufrufen, um zurückzusetzen.
    Bei zweiterem ware eine zweite Funktion von Vorteil, die zuerst die größe/anzahl der Dateien ermittelt und dann nach herunterladen, den prozentualen Anteil zurückgibt.
    Oder beides? (ala WinRAR etc.)
    (müsste zumindest so funktionieren)

  • Auslesen eines GUI-Inputs

    • draien
    • 16. Januar 2015 um 10:31

    Wie alpines schon sagte. Man muss sich halt überlegen "Wann möchte ich den Input auslesen?". So wie du es jetzt hast, wird er beim Start genau einmal ausgelesen (und da steht ja noch nichts drin). So könnte z.B. das ganze aussehen:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>

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

    GuiCreate("AirlineSim Service Tool",400,400)
    GuiSetState(@sw_show)

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

    GUICtrlCreateLabel("Server auswählen: ",20,20)
    GUICtrlCreateLabel("Username: ",20,45,75)
    GUICtrlCreateLabel("Password: ",20,70,75)

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

    $BExit = GUICtrlCreateButton("Schließen",340,370)
    $CServer = GUICtrlCreateCombo("Serverliste",120,20,150)
    $DServer = GUICtrlSetData($CServer,"Tempelhof|Gatow|Devau")
    $IUser = GUICtrlCreateInput("",120,45,150)
    $IPass = GUICtrlCreateInput("",120,70,150)

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

    While 1
    $GMsg = GuiGetMsg()
    Switch $GMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_MINIMIZE
    GuiSetState(@SW_Minimize)
    Case $BExit
    $RCombo1 = GUICtrlRead($CServer)
    $RUser = GUICtrlRead($IUser)
    $RPass = GUICtrlRead($IPass)
    Msgbox(16,"Server: "&$RCombo1,$RUser&" <--User & Pass --> "&$RPass)
    Exit
    EndSwitch

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

    WEnd

    [/autoit]

    aber bei ComboBoxen habe ich mir angewöhnt, die Combovariable($RCombo1) direkt zu ändern, statt abzufragen(das mit Inputs zu realisieren ist nicht so einfach).
    Erfordert aber, dass die Variable vorher deklariert wurde(Local/Global/...).
    Das könnte dann so aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>

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

    GuiCreate("AirlineSim Service Tool",400,400)
    GuiSetState(@sw_show)

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

    GUICtrlCreateLabel("Server auswählen: ",20,20)
    GUICtrlCreateLabel("Username: ",20,45,75)
    GUICtrlCreateLabel("Password: ",20,70,75)

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

    $BExit = GUICtrlCreateButton("Schließen",340,370)
    $CServer = GUICtrlCreateCombo("Serverliste",120,20,150)
    $DServer = GUICtrlSetData($CServer,"Tempelhof|Gatow|Devau")
    $IUser = GUICtrlCreateInput("",120,45,150)
    $IPass = GUICtrlCreateInput("",120,70,150)
    Local $RCombo1

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

    While 1
    $GMsg = GuiGetMsg()
    Switch $GMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_MINIMIZE
    GuiSetState(@SW_Minimize)
    Case $CServer
    $RCombo1 = GUICtrlRead($CServer)
    Case $BExit
    $RUser = GUICtrlRead($IUser)
    $RPass = GUICtrlRead($IPass)
    Msgbox(16,"Server: "&$RCombo1,$RUser&" <--User & Pass --> "&$RPass)
    Exit
    EndSwitch

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

    WEnd

    [/autoit]
  • OnEvent in sich aufrufenden Funktionen

    • draien
    • 15. Januar 2015 um 16:32

    Hat auch einen Grund. Es klappt solange bis du 2mal start betätigst. Du loopst while-schleifen hinter while-schleifen (mit jemals Sleep(100)) also reagiert das script gar nicht mehr (sleeped durchgehend, dabei wechseln sich 1. start() und 2. start() nacheinander ab). Zumindest ovn meinem verständnis her.

    So funktionierts jedoch:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    Opt("GuiOnEventMode", 1)
    Global $laeuft

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

    $Gui = GUICreate("Beispiel", 100, 100)
    GUISetState(@SW_SHOW)

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

    $starten = GUICtrlCreateButton("start", 0, 0)
    GUICtrlSetOnEvent(-1, "start")

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

    $stoppen = GUICtrlCreateButton("stop", 50, 0)
    GUICtrlSetOnEvent(-1, "stop")

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

    $test = GUICtrlCreateButton("test", 0, 80)
    GUICtrlSetState(-1, $GUI_HIDE)

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

    ;start()

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

    While 1
    Sleep(100)
    While $laeuft
    Sleep(100)
    WEnd
    WEnd

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

    Func start()
    If $laeuft = False Then
    $laeuft = True
    MsgBox(0, "", "Funktion start")
    If GuiCtrlGetState(-1) = 96 Then
    GUICtrlSetState(-1, $GUI_SHOW)
    GUICtrlSetOnEvent($test, "test")
    EndIf
    EndIf
    EndFunc ;==>start

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

    Func test()
    MsgBox(0, "", "Funktion test")
    EndFunc ;==>test

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

    Func stop()
    If $laeuft = True Then
    $laeuft = False
    MsgBox(0, "", "Funktion gestoppt")
    GuiCtrlSetState($test,$GUI_HIDE)
    EndIf
    EndFunc ;==>stop

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

    Jetzt hast du (indirect) deine While-Schleife mit deiner start() Funktion verknüpft

    Edit: okay code bearbeitet

  • OnEvent in sich aufrufenden Funktionen

    • draien
    • 15. Januar 2015 um 14:21

    Genau wegen der while-schleifen in deinem start(). Er "hängt" dann in der WhileSchleife.
    Wenn du diese auskommentierst, funktioniert das Script.

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    Opt("GuiOnEventMode", 1)

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

    $Gui = GUICreate("Beispiel", 100, 100)
    GUISetState(@SW_SHOW)

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

    $starten = GUICtrlCreateButton("start", 0, 0)
    GUICtrlSetOnEvent(-1, "start")

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

    $test = GUICtrlCreateButton("test", 0, 80)
    GUICtrlSetState(-1, $GUI_HIDE)

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

    ;~ start()

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

    While 1
    Sleep(100)
    WEnd

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

    Func start()
    MsgBox(0, "", "Funktion start")
    GUICtrlSetState($test, $GUI_SHOW)
    GUICtrlSetOnEvent($test, "test")
    ;While 1
    ; Sleep(100)
    ;WEnd
    EndFunc ;==>start

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

    Func test()
    MsgBox(0, "", "Funktion test")
    EndFunc ;==>test

    [/autoit]


    Was möchtest du den mit der While Schleife realisieren?

  • Msgbox bei ini veränderung ausgeben

    • draien
    • 12. Januar 2015 um 15:28

    Darnas:
    Wenn du alle geänderten Dateien in einer Messagebox ausgeben willst, dann die Zeile 29 und 39 ersetzen mit:

    Spoiler anzeigen
    [autoit]


    $added &= $Files_a[$x]

    [/autoit]


    Und die letzte Messagebox zu (Zeile 42):

    [autoit]


    MsgBox($MB_ICONINFORMATION,"Info!","Folgende Datei(en)/Ordner wurde(n) hinzugefügt: " & @CRLF & $added)

    [/autoit]


    Wenn du jedesmal eine neue MessageBox für alle Dateien haben möchtest, dann Zeile 29 und 39 ersetzen mit:

    Spoiler anzeigen
    [autoit]

    MsgBox($MB_ICONINFORMATION,"Info!","Folgender Ordner wurde hinzugefügt: " & @CRLF & $Files_a[$x])

    [/autoit]

    Oscar :
    Daran hab ich gar nicht gedacht :O

  • Msgbox bei ini veränderung ausgeben

    • draien
    • 12. Januar 2015 um 14:31
    Zitat von Darnas

    jetzt spuckt er diesen Fehler aus:
    For $x = 1 To $Files_a[0]
    For $x = 1 To $Files_a^ ERROR
    >Exit code: 1 Time: 2.161

    änder mal

    [autoit]


    GLobal $Path_s = @ScriptDir

    [/autoit]


    zu deinem richtigen Path_s. Und benutze das hier:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #Include <array.au3>
    #include <MsgBoxConstants.au3>

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

    HotKeySet("+!d", "_CloseIt") ;mit ESC kann Skript verlassen werden

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

    Func _CloseIt()
    Exit
    EndFunc

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

    ;============Variablen============;
    Global $Files_a ;$Path_s = InputBox("Pfad angegeben:","Gib den Pfad für den Ordner/Verzeichnis an","C:\AutoIt")
    GLobal $Path_s = @ScriptDir
    Global $Path_ini = @ScriptDir & "\Test.ini" ;Hier inipfad angeben!

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

    _refreshIni("Dateien")
    _refreshIni("Ordner")

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

    Func _refreshIni($section)
    Local $added

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

    Switch $section
    Case "Dateien"
    $Files_a = _FileListToArray($Path_s,"*",1)
    If IsArray($Files_a) Then
    For $x = 1 To $Files_a[0]
    If IniRead($Path_ini,$section,$Files_a[$x],"not found") <> "Datei" Then
    IniWrite($Path_ini,$section,$Files_a[$x],"Datei")
    $added = "Datei(en)"
    EndIf
    Next
    EndIf
    Case "Ordner"
    $Files_a = _FileListToArray($Path_s,"*",2)
    If IsArray($Files_a) Then
    For $x = 1 To $Files_a[0]
    If IniRead($Path_ini,$section,$Files_a[$x],"not found") <> "Ordner" Then
    IniWrite($Path_ini,$section,$Files_a[$x],"Ordner")
    $added = "Ordner"
    EndIf
    Next
    EndIf

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

    Case Else
    MsgBox($MB_ICONERROR,"Error!",'_refreshIni mit falschem Parameter aufgerufen ("Dateien" oder "Ordner")!')
    $added = ""
    EndSwitch

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

    If $added Then
    MsgBox($MB_ICONINFORMATION,"Info!","Ein oder mehrere " & $added & " wurde(n) hinzugefügt")
    EndIf

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

    EndFunc
    ;===========Die Funktionen==========;

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

    Func _searchFiles()
    $Files_a = _FileListToArray($Path_s,"*",1)
    If IsArray($Files_a) Then
    ;_ArrayDisplay($Files_a,"Dateien für die ini")
    _ArrayToClip($Files_a)
    For $i = 1 to $Files_a[0]
    $Pfad_s = IniRead("$Path_s&Test.ini","Allgemein","Dateien","")
    If @error or not FileExists("$Path_s&Test.ini") then
    IniWrite("$Path_s&Test.ini","Allgemein","Dateien",ClipGet())
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

    Und deine Ini sollte so aussehen:

    Spoiler anzeigen
    Code
    [Dateien]
    [Ordner]

    So und wenn du jetzt noch was aus der Ini löschen willst, musst du das ganze umgekehrt machen (IniRead -> Array ; Array mit FileList vergleichen und IniDelete anwenden)
    Hab versucht eher Hilfe zu leisten, als einen vorgekauten Brei vorzusetzen :/
    Aber das war's von meiner Seite.
    Sonst artet das hier noch aus.

  • Msgbox bei ini veränderung ausgeben

    • draien
    • 12. Januar 2015 um 14:00

    $Path_ini muss noch geändert warden und die Sections [Dateien] und [Ordner] in die Ini hinzugefügt werden.

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #Include <array.au3>
    #include <MsgBoxConstants.au3>

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

    HotKeySet("+!d", "_CloseIt") ;mit ESC kann Skript verlassen werden

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

    Func _CloseIt()
    Exit
    EndFunc

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

    ;============Variablen============;
    Global $Files_a ;$Path_s = InputBox("Pfad angegeben:","Gib den Pfad für den Ordner/Verzeichnis an","C:\AutoIt")
    GLobal $Path_s = @ScriptDir
    Global $Path_ini = @ScriptDir & "\Test.ini" ;Hier inipfad angeben!

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

    _refreshIni("Dateien")
    _refreshIni("Ordner")

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

    Func _refreshIni($section)
    Local $added

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

    Switch $section
    Case "Dateien"
    $Files_a = _FileListToArray($Path_s,"*",1)
    For $x = 1 To $Files_a[0]
    If IniRead($Path_ini,$section,$Files_a[$x],"not found") <> "Datei" Then
    IniWrite($Path_ini,$section,$Files_a[$x],"Datei")
    $added = "Datei(en)"
    EndIf
    Next
    Case "Ordner"
    $Files_a = _FileListToArray($Path_s,"*",2)
    For $x = 1 To $Files_a[0]
    If IniRead($Path_ini,$section,$Files_a[$x],"not found") <> "Ordner" Then
    IniWrite($Path_ini,$section,$Files_a[$x],"Ordner")
    $added = "Ordner"
    EndIf
    Next

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

    Case Else
    MsgBox($MB_ICONERROR,"Error!",'_refreshIni mit falschem Parameter aufgerufen ("Dateien" oder "Ordner")!')
    $added = ""
    EndSwitch

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

    If $added Then
    MsgBox($MB_ICONINFORMATION,"Info!","Ein oder mehrere " & $added & " wurde(n) hinzugefügt")
    EndIf

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

    EndFunc
    ;===========Die Funktionen==========;

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

    Func _searchFiles()
    $Files_a = _FileListToArray($Path_s,"*",1)
    If IsArray($Files_a) Then
    ;_ArrayDisplay($Files_a,"Dateien für die ini")
    _ArrayToClip($Files_a)
    For $i = 1 to $Files_a[0]
    $Pfad_s = IniRead("$Path_s&Test.ini","Allgemein","Dateien","")
    If @error or not FileExists("$Path_s&Test.ini") then
    IniWrite("$Path_s&Test.ini","Allgemein","Dateien",ClipGet())
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]
  • Msgbox bei ini veränderung ausgeben

    • draien
    • 12. Januar 2015 um 12:24
    Spoiler anzeigen
    [autoit]


    #include <MsgBoxConstants.au3>
    #include <File.au3>

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

    _refreshIni(1)
    _refreshIni(0)

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

    ;=========Die .ini erneuern========;
    Func _refreshIni($iFlag)
    If $iFlag = 1 OR $iFlag = 0 Then
    $Files_a = _FileListToArray($Path_s,"*",$iFlag)
    If IsArray($Files_a) Then
    $ClipGet = _ArrayToString($Files_a)
    If IniRead("C:\AutoIt\Test.ini","Allgemein","Dateien","not found") <> $ClipGet Then
    IniWrite("C:\AutoIt\Test.ini","Allgemein","Dateien",$ClipGet)
    If $iFlag = 1 Then
    MsgBox($MB_ICONINFORMATION,"Info!","Datei wurde hinzugefügt")
    Else
    MsgBox($MB_ICONINFORMATION,"Info!","Ordner wurde hinzugefügt")
    EndIf
    EndIf
    EndIf
    Else
    MsgBox($MB_ICONERROR,"Error!","_refreshIni mit falschem Parameter aufgerufen (0 oder 1)!")
    EndIf
    EndFunc

    [/autoit]


    Und wo genau klappt da was nicht?

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™