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

Beiträge von Oscar

  • _FFXPath Problem

    • Oscar
    • 30. November 2015 um 14:24

    Wo ist Dein Script?

  • solange $_sw >= 0

    • Oscar
    • 30. November 2015 um 05:21

    Irgendwie erinnert mich das an "Per Anhalter durch die Galaxis":
    Die Antwort lautet: "42"
    Um zu verstehen was die Antwort bedeutet, muss man erstmal die Frage verstehen. :D

    Du präsentierst uns hier Lösungen, zu denen wir nicht einmal das Problem verstehen. ;)

    Aber abgesehen davon, diese Reihe an If-Bedingungen kannst Du durch ein einziges Switch ersetzen.
    Vermutlich geht das auch ohne diese "Armee von Funktionen", aber dazu müsste man die Problemstellung verstehen.

  • solange $_sw >= 0

    • Oscar
    • 29. November 2015 um 11:50

    Alina: Das stimmt nur, weil die Termine in Deinem Beispiel dem 2-1-4 Tage-Rhythmus folgen. Wenn Du Termine mit 1-1-2 oder so eintragen willst, dann klappt das nicht mehr.
    Aber vielleicht war das ja auch die Aufgabenstellung. Das hast Du ja offen gelassen.

  • solange $_sw >= 0

    • Oscar
    • 29. November 2015 um 11:13

    Genau das meine ich mit der u.U. richtigen Reihenfolge der Bedingungen.
    Meiner Meinung nach, machst Du da einen Fehler, denn wenn Du erst auf alle zwei Tage prüfst und dann zwei Tage addierst, dann kannst Du bei der nächsten Zeile nicht mehr auf jeden Tag prüfen.

  • solange $_sw >= 0

    • Oscar
    • 29. November 2015 um 10:58

    Jetzt kennen wir die Lösung, wissen aber nicht wofür das die Lösung ist. ;)

  • Ärger über @ScriptDir

    • Oscar
    • 29. November 2015 um 10:24

    Man könnte gleich am Anfang des Scripts eine eigene Variable deklarieren:

    AutoIt
    Global $sScriptDir = @ScriptDir
    If StringRight($sScriptDir, 1) <> '\' Then $sScriptDir &= '\'
  • solange $_sw >= 0

    • Oscar
    • 29. November 2015 um 10:20

    Naja, er hat schon recht!
    Die Bedingungen/Prüfungen, die Alina aufgeschrieben hat sind ja u.U. alle zutreffend (bei $_sw >= 4) und dann kommt es vielleicht auch auf die Reihenfolge der Prüfungen an.
    Hier wäre es also besser, etwas mehr über den Hintergrund zu erfahren, um wirklich helfen zu können.

  • Happy Birthday, Raupi!

    • Oscar
    • 26. November 2015 um 18:28

    Hallo Raupi!
    Alles Gute zum Geburtstag!
    Feiere schön und lass Dich reich beschenken! :party:

  • Wie die Übersicht im Programmcode behalten

    • Oscar
    • 26. November 2015 um 18:11

    [verschoben nach "Off-Topic"]

    Ich halte mich diesbezüglich an meine eigenen Regeln.

    Da wäre als erstes die Reihenfolge:
    - Zuerst alle Includes
    - dann die Optionen
    - dann die Deklaration aller globalen Variablen
    - dann das erstellen der Main-GUI
    - dann das erstellen evtl. Child-GUIs
    - dann die Wait-Schleife (ich benutze bei größeren Projekten immer den OnEventMode)
    - und zum Schluß die Funktionen.

    Wobei ich Funktionen, die ich häufiger benutze, meist schon als UDF erstellt habe und diese dann per Include einbinde.
    Bei den Funktionen versuche ich zusammenhängende Funktionen auch zusammenhängend (hintereinander) zu schreiben (sodass man weniger scrollen muss).

    Meist füge ich auch Kommentare ein, damit ich später (nächstes Jahr) auch noch weiß, warum ich dieses oder jenes gemacht habe.

    Bei den Variablen verwende ich nach Möglichkeit Variablennamen, die etwas über die Funktion und/oder den Inhalt aussagen.

    Mit diesen Regeln komme ich eigentlich ganz gut klar (auch bei Scripten mit mehreren tausend Zeilen).

  • Variablen Problem

    • Oscar
    • 26. November 2015 um 18:07

    Der Befehl, den Du suchst heißt "Eval":

    AutoIt
    Global $StringV1 = "String1"
    Global $StringV2 = "String2"
    Global $StringV3 = "String3"
    Global $StringV4 = "String4"
    For $i = 1 to 4 Step 1
    	ConsoleWrite(Eval("StringV" & $i) & @CR)
    Next


    Du solltest Dich aber mal mit Arrays beschäftigen, denn Eval sollte man nach Möglichkeit meiden:

    AutoIt
    Global $aStringV[4] = ["String1", "String2", "String3", "String4"]
    For $i = 0 To UBound($aStringV) -1
    	ConsoleWrite($aStringV[$i] & @CR)
    Next
  • Betätigung des Ein-/Aus-Tasters am Notebook erkennen

    • Oscar
    • 16. November 2015 um 18:33

    Soweit ich weiß, kann man den Power-Button nicht "abschalten". Ein dauerhaftes Gedrückthalten löst hardwaremäßig ein Abschalten des Notebooks aus.

  • Betätigung des Ein-/Aus-Tasters am Notebook erkennen

    • Oscar
    • 16. November 2015 um 11:54
    Zitat von F1109

    Außerdem sprechen wir hier von Gelegenheitsdieben

    Seit wann fahren Diebe den Rechner erst runter?
    Ein Kabelschloss mit Kensington-Adapter wäre sicher hilfreicher.

  • Frage an Sprayer / Airbrush / Maler / Farbenspezialisten

    • Oscar
    • 15. November 2015 um 08:55

    Ich habe keine Ahnung davon, ob sowas möglich ist.
    Es hört sich jedenfalls witzig an. Ich könnte mir nur vorstellen, dass es da eine Menge Probleme (Abstand, Schräghaltung, Zittern. etc.) gibt, wenn Du das Gerät in der Hand halten willst.
    Ich habe hier mal ein Video von den Mythbusters gefunden, die eine Farbkanone gebaut haben:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Func Probleme

    • Oscar
    • 14. November 2015 um 15:32

    Ob das den Code lesbarer gestaltet möchte ich bezweifeln! X/
    Und so einen Code zu debuggen stelle ich mir grausam vor.

  • 2D Arrays vergleichen und nur Übereinstimmung in neuem Array auflisten...

    • Oscar
    • 14. November 2015 um 15:28

    Oh, stimmt! Das funktioniert ja wirklich!
    Danke, für den Hinweis! Wieder was gelernt. :)

    Dann braucht man gar nicht mit dem String und Trennzeichen zu "tricksen".

  • Auslesen und auswerten von Link mittels FF.au3

    • Oscar
    • 13. November 2015 um 16:41

    Warum nennst Du dann nicht die Seite?

  • 2D Arrays vergleichen und nur Übereinstimmung in neuem Array auflisten...

    • Oscar
    • 13. November 2015 um 16:40

    Genau! Es gibt dabei immer nur einen KEY und nur ein ITEM.
    Brauchst Du mehrere Werte musst Du "tricksen" (mit einem Trennzeichen als String zusammenfügen).
    Das bietet sich aber nur für das Item an. Den Key braucht man ja für den Vergleich.

  • Automatisch ändernde Checkbox Control-ID

    • Oscar
    • 13. November 2015 um 16:34

    Das würde dann so gehen:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    Global $Form1 = GUICreate("test", 400, 600)
    GUISetFont(12, 400, 0, "Arial")
    Global $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 10, 5, 380, 27)
    GUICtrlSetFont(-1, 12, 400, 2, "Arial")
    Global $idList = GUICtrlCreateListView('Prozess|PID', 10, 40, 380, 520, Default, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    Global $hList = GUICtrlGetHandle($idList)
    _GUICtrlListView_JustifyColumn($hList, 1, 1)
    $idGetChecked = GUICtrlCreateButton('Auswahl anzeigen', 120, 570, 150, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $aProcesslist = ProcessList()
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    _GUICtrlListView_AddArray($hList, $aProcesslist)
    _GUICtrlListView_SetColumnWidth($hList, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hList, 1, $LVSCW_AUTOSIZE)
    Global $aCheckedProcess
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $idGetChecked
    			$aCheckedProcess = _GUICtrlListView_GetCheckedItemText($hList)
    			If Not @error Then _ArrayDisplay($aCheckedProcess, 'ausgewählte Prozesse')
    	EndSwitch
    WEnd
    
    
    Func _GUICtrlListView_GetCheckedItemText($hListView, $iSubItem = 0)
    	Local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    	If @error Then Return SetError(@error, 0, 0)
    	Local $aCheckedItemText[UBound($aCheckedIndices)]
    	For $i = 0 To UBound($aCheckedIndices) - 1
    		$aCheckedItemText[$i] = _GUICtrlListView_GetItemText($hList, $aCheckedIndices[$i], $iSubItem)
    	Next
    	Return $aCheckedItemText
    EndFunc   ;==>_GUICtrlListView_GetCheckedItemText
    
    
    Func _GUICtrlListView_GetCheckedIndices($hListView)
    	Local $iCount = _GUICtrlListView_GetItemCount($hListView), $sChecked = ''
    	If $iCount = 0 Then Return SetError(1, 0, 0)
    	For $i = 0 To $iCount - 1
    		If _GUICtrlListView_GetItemChecked($hListView, $i) Then $sChecked &= $i & ','
    	Next
    	If $sChecked = '' Then Return SetError(2, 0, 0)
    	Return StringSplit(StringTrimRight($sChecked, 1), ',', 2)
    EndFunc   ;==>_GUICtrlListView_GetCheckedIndices
    Alles anzeigen
  • Automatisch ändernde Checkbox Control-ID

    • Oscar
    • 12. November 2015 um 19:26

    Hier noch die Version mit dem Listview:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    $Form1 = GUICreate("test", 400, 600)
    GUISetFont(14, 400, 0, "Arial")
    $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 10, 5, 380, 27)
    GUICtrlSetFont(-1, 12, 400, 2, "Arial")
    $idList = GUICtrlCreateListView('Prozess|PID', 10, 40, 380, 530, Default, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    _GUICtrlListView_JustifyColumn($idList, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $aProcesslist = ProcessList()
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    _GUICtrlListView_AddArray($idList, $aProcesslist)
    _GUICtrlListView_SetColumnWidth($idList, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($idList, 1, $LVSCW_AUTOSIZE)
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    WEnd
    Alles anzeigen
  • Automatisch ändernde Checkbox Control-ID

    • Oscar
    • 12. November 2015 um 19:15

    Ganz so einfach ist es nicht!
    Er will ja nicht alle Prozesse auf einmal auf der GUI anzeigen lassen, sondern mit den Pfeiltasten durch die Liste "blättern". Jedenfalls interpretiere ich das so.
    Das würde dann so gehen:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    
    
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    $Form1 = GUICreate("test", 370, 596, 635, 223)
    GUISetFont(14, 400, 0, "Arial")
    $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 24, 0, 320, 27)
    GUICtrlSetFont(-1, 14, 400, 2, "Arial")
    $idPrev = GUICtrlCreateButton("<", 0, 24, 50, 25)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    $idPageView = GUICtrlCreateLabel("", 60, 24, 250, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    $idNext = GUICtrlCreateButton(">", 320, 24, 50, 25)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $iCheckboxCount = 11 ; Anzahl der Checkboxen je Seite
    Global $aProcesslist = ProcessList()
    Global $iProcessCount = $aProcesslist[0][0]
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    
    
    Global $iCheckboxPages = Ceiling($iProcessCount / $iCheckboxCount) ; Anzahl der Seiten
    Global $iPageCount = 0 ; Seitenzähler
    
    
    ; Checkboxen erstellen
    Global $aidCheckbox[$iCheckboxCount] ; Array für die IDs der Checkboxen
    For $i = 0 To $iCheckboxCount - 1
    	$aidCheckbox[$i] = GUICtrlCreateCheckbox('', 10, 80 + $i * 40, 353, 33)
    Next
    
    
    Global $aCheckedList[$iCheckboxPages][$iCheckboxCount] ; 2D-Array zum speichern der Haken bei den Checkboxen
    
    
    _SetCheckboxData()
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $idPrev
    			If $iPageCount - 1 >= 0 Then
    				_GetCheckboxData()
    				$iPageCount -= 1
    				_SetCheckboxData()
    			EndIf
    		Case $idNext
    			If $iPageCount + 1 <= $iCheckboxPages - 1 Then
    				_GetCheckboxData()
    				$iPageCount += 1
    				_SetCheckboxData()
    			EndIf
    	EndSwitch
    WEnd
    
    
    Func _GetCheckboxData()
    	For $i = 0 To $iCheckboxCount - 1
    		$aCheckedList[$iPageCount][$i] = BitAND(GUICtrlRead($aidCheckbox[$i]), $GUI_CHECKED)
    	Next
    EndFunc   ;==>_GetCheckboxData
    
    
    Func _SetCheckboxData()
    	Local $iStart = $iPageCount * $iCheckboxCount
    	For $i = 0 To $iCheckboxCount - 1
    		If $iStart + $i <= $iProcessCount - 1 Then
    			GUICtrlSetState($aidCheckbox[$i], $GUI_SHOW)
    			GUICtrlSetState($aidCheckbox[$i], ($aCheckedList[$iPageCount][$i] ? $GUI_CHECKED : $GUI_UNCHECKED))
    			GUICtrlSetData($aidCheckbox[$i], $aProcesslist[$iStart + $i][0])
    		Else
    			GUICtrlSetState($aidCheckbox[$i], $GUI_HIDE)
    			GUICtrlSetData($aidCheckbox[$i], '')
    		EndIf
    	Next
    	GUICtrlSetData($idPageView, StringFormat("Seite %i/%i", $iPageCount + 1, $iCheckboxPages))
    EndFunc   ;==>_SetCheckboxData
    Alles anzeigen

    Allerdings würde ich persönlich lieber ein Listview benutzen und dort dann alle Processe eintragen, sodass der Benutzer scrollen kann.
    Checkboxen sind auch mit einem Listview möglich.

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™