Wo ist Dein Script?
Beiträge von Oscar
-
-
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.
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. -
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. -
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. -
Jetzt kennen wir die Lösung, wissen aber nicht wofür das die Lösung ist.

-
-
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. -
Hallo Raupi!
Alles Gute zum Geburtstag!
Feiere schön und lass Dich reich beschenken!
-
[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).
-
Der Befehl, den Du suchst heißt "Eval":
AutoItGlobal $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: -
Soweit ich weiß, kann man den Power-Button nicht "abschalten". Ein dauerhaftes Gedrückthalten löst hardwaremäßig ein Abschalten des Notebooks aus.
-
Außerdem sprechen wir hier von Gelegenheitsdieben
Seit wann fahren Diebe den Rechner erst runter?
Ein Kabelschloss mit Kensington-Adapter wäre sicher hilfreicher. -
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.comInhalte 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. -
Ob das den Code lesbarer gestaltet möchte ich bezweifeln!
Und so einen Code zu debuggen stelle ich mir grausam vor. -
-
Warum nennst Du dann nicht die Seite?
-
-
Das würde dann so gehen:
AutoIt
Alles anzeigen#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 -
Hier noch die Version mit dem Listview:
AutoIt
Alles anzeigen#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 -
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
Alles anzeigen#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 ;==>_SetCheckboxDataAllerdings 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.