...und mal als Tipp: Die Lösung des Problems stand doch in der Fehlermeldung
$WM_DROPFILES previously declared as a 'Const'.
Wenn eine Variable/Konstante bereits deklariert war, einfach die Zeile mit der Deklaration, welche vom Syntaxcheck bemängelt wird, auskommentieren.
Beiträge von BugFix
-
-
also wirklich komplett durchsichtig und ohne Titelleiste oder ähnliches. Geht das?
Schau dir dazu an:
Style: $WS_POPUP
WinSetTrans -
In meinem vorigen Pattern hatte ich vergessen, die Umbrüche auszufiltern.
So gehts z.B.AutoIt
Alles anzeigen$aMatch = StringRegExp($sText, '(?m)([^:\r\n]+)', 3) Local $oDict = ObjCreate('Scripting.Dictionary') For $i = 0 To UBound($aMatch) -2 Step 2 ;~ ConsoleWrite($aMatch[$i] & ':' & StringStripWS($aMatch[$i+1], 1) & @CRLF) $oDict($aMatch[$i]) = StringStripWS($aMatch[$i+1], 1) Next ConsoleWrite($oDict('Account no.') & @LF) ConsoleWrite($oDict('Company') & @LF) ConsoleWrite($oDict('Your Name') & @LF) ConsoleWrite($oDict('Address') & @LF) ConsoleWrite($oDict('City') & @LF) ConsoleWrite($oDict('Postal code') & @LF) ConsoleWrite($oDict('Telephone') & @LF) ConsoleWrite($oDict('E-Mail Address') & @LF) ConsoleWrite($oDict('Country') & @LF) -
Will man in Arrays löschen muß man rückwärts iterieren, damit man sich nicht selbst den Ast (Index) absägt, auf dem man sitzt

-
zu kompliziert

So bekommst du alles in ein Array, abwechselnd Schlüssel und Wert:
AutoIt
Alles anzeigen$sText = _ 'Account no.: 123456789' & @CRLF & _ 'Company: Test GmbH' & @CRLF & _ 'Your Name: Herr Test' & @CRLF & _ 'Address: Teststrasse 1' & @CRLF & _ 'City: Testort' & @CRLF & _ 'Postal code: 12345' & @CRLF & _ 'Telephone: 0123456789' & @CRLF & _ 'E-Mail Address: bla@test.de' & @CRLF & _ 'Country: DE ' $aMatch = StringRegExp($sText, '(?m)([^:]+)', 3) For $x In $aMatch ConsoleWrite(StringStripWS($x, 1) & @CRLF) Next -
Große Hilfe kann ich nicht bieten, da ich nicht mit dem OS arbeite.
_ArrayDisplay($colItems) Das kann nicht funktionieren, eine Collection ist kein Array.
Allerdings sollte man mit For Element In Collection iterieren können - sofern dort Elemente enthalten sind.
Überprüfe zuerst ob deine Angaben korrekt sind (IIsApplicationPoolSetting-Name).AutoIt$colIISApps = $objWMIService.ExecQuery ("Select * from IIsApplicationPoolSetting") For $Item In $colIISApps ConsoleWrite($Item.Name & @CRLF) NextHier sollte jetzt der in deiner Abfrage verwendete Name auch gelistet sein. Falls nicht, kannst du auch dessen Inhalte nicht ermitteln.
-
Welche Webcam.au3 ist das? Probier mal meine (falls sie das nicht ist). Findest du bei meinen UDF, Link ist inder Signatur.
-
Ach ja - das sollte kein Diskussionsthread werden, deshalb hänge ich mal ein Schloß vor.
-
Ich möchte mal wieder ein Thema ansprechen, das eigentlich selbstverständlich sein sollte - unser Umgang miteinander.
Es häufen sich leider Posts, in denen statt sachlicher Diskussion ein Wechsel auf verbalen Schlagabtausch im persönlichen Bereich stattfindet. Sei es, dass da ein User postet, mit dem man bereits einmal einen Strauß gefochten hatte oder man sich durch einen Post persönlich angegriffen fühlt - da wird z.Zt. häufiger die Keule rausgeholt und zum Rundumschlag angesetzt.
Leute - DAS wirft ein schlechtes Licht auf uns!
Es erinnert eher an frühpubertäres Gebaren, wenn man statt sachlichem Streit einen emotional gesteuerten "Kampf" beginnt.
Und haben wir das nötig? - Nein!
Hier im Forum ist soviel Potenzial vereint, da sollte man auch die Nonchalance aufbringen über un/gewollte persönliche Angriffe hinwegzusehen. Natürlich stellt unser Forum auch ein Abbild unserer Gesellschaft dar, mit allen Schattierungen. Doch uns eint eine gemeinsame Leidenschaft - AutoIt.Und deshalb meine Bitte: Bevor ihr auf den Senden-Button klickt, lest nochmal in Ruhe, was ihr da geschrieben habt und überlegt, wie ihr reagieren würdet, wenn der Post an euch gerichtet wäre.
Auf eine lange und angenehme Zeit miteinander.
-
Die Variableninhalte aus Script A sind z.B. Usereingaben und wenn der User die Eingabe nicht vorgenommen hat, ist die Variable nicht belegt.
Belege diese Variable bei der globalen Deklaration mit einem Wert, z.B. $var = Null und stze diese Variable nach jeder erfolgten Verwendung auf diesen Wert zurück. Dann kannst du jederzeit mit If $var = Null Then ; keine Usereingabe erfolgt arbeiten.
EDIT: @CentuCore war ein paar Sekunden schneller

-
Wenn schon der Lehrstuhl für die zukünftige Elite der Programmiererzunft empfiehlt, diesen Operator "sparsam" aus o.g. Gründen einzusetzen, dann sollte einem Unkundigen dieses Stück "Technik" besser erspart bleiben.
Das sehe ich etwas differenzierter.
Was macht einen großen Teil des Programmierens aus? - Das Finden von sich wiederholenden Programmstrukturen und zur Vereinfachung des Codes, das Auslagern dieser Strukturen in Funktionen.
Nun schaue ich in ein Skript und entdecke 10...20 mal:AutoItLocal $variable If 'Bedingung' Then $variable = 'Wert-WAHR' Else $variable = 'Wert-FALSCH' EndIfAlso sage ich mir, pack das in eine Funktion. Gesagt - getan:
AutoItFunc _If_Then_Else($_condition, $_result_true, $_result_false) If $_condition Then Return $_result_true Else Return $_result_false EndIf EndFuncUnd nun sieht der gleiche Programmteil schon viel ansprechender aus und ist nach wie vor gut lesbar:
Und dann kam AutoIt v3.10.x.x mit dem Ternären Operator.Und He! - der tut genau das, was meine Funktion bisher tat! D.h. es ist nicht nur "syntactic sugar", sondern auch das Abbilden einer bisher von Usern selbst erstellten Funktion in einer neuen Syntax.
Für mich stellen sich beim Verwenden von Funktionen oder Syntax-Elementen in erster Linie folgende Fragen:
- Kann ich Code damit schlanker gestalten?
- Ist die Lesbarkeit des Codes gewährleistet?
Beides kann kann ich hier absolut bejahen. Selbst das Kapseln mehrer Ternärer Operatoren muß nicht die Lesbarkeit beeinträchtigen, wenn man den Code etwas aufteilt.Bsp.
AutoIt
Alles anzeigenFunc _FormatSeconds($_sec) Return ( $_sec < 60 ? StringFormat('00:00:%02u', $_sec) : _ $_sec < 60*60 ? StringFormat('00:%02u', Floor($_sec/60)) & ':' & _ StringFormat('%02u', Mod($_sec,60)) : _ $_sec < 60*60*24 ? StringFormat('%02u', Floor($_sec/3600)) & ':' & _ StringFormat('%02u', Floor(Mod($_sec,3600)/60)) & ':' & _ StringFormat('%02u', Mod(Mod($_sec,3600),60)) : _ ( $_sec = 86400 ? "24:00:00" : Floor($_sec/86400) & ' d / ' & _ StringFormat('%02u', Floor(Mod($_sec,86400)/3600)) & ':' & _ StringFormat('%02u', Floor(Mod(Mod($_sec,86400),3600)/60)) & ':' & _ StringFormat('%02u', Mod(Mod(Mod($_sec,86400),3600),60)) & ' h') ) EndFunc ;==>_FormatSecondsAbschließend noch etwas zur bisherigen Threadführung:
Meinungsstreit? - Unbedingt: JA!
Aber: Bitte vermeidet das Abgleiten auf eine persönliche Ebene. Das dient weder der Problemlösung, noch macht es das Lesen des Threads angenehm. -
-
-
-
@autoBert Kann ich erst sagen, wenn ich davor sitze. Bisher wurde jede Aktion, die ich in Bezug auf den Dienst ausführen wollte, abgeschmettert.
-
Ich habe diesen Thread bestimmt 5 mal gelesen, ohne mit Sicherheit sagen zu können, was der TE überhaupt will.
Mein Eindruck: Du hast als erstes nur Verwirrung gestiftet, indem du von Pointern sprichst, obwohl nichts aus deiner sparsamen Beschreibung auf deren sinnvolle Verwendung schließen lässt.
Wenn du eine Variable im Ursprung nutzen willst, ohne eine Kopie anzulegen, musst du ByRef arbeiten - das wurde dir schon ganz am Anfang empfohlen. Anscheinend hast du diese Empfehlung ignoriert.
Auch ein Array kannst du ByRef bearbeiten.
Bring mal ein Bsp. Skript ohne dieses unnütze Pointer-Gedöns (s. X-Y-Problem), dann sehen wir weiter. -
Das ist anscheinend nicht richtig deutlich geworden:
Ich kann keine Änderungen an dem Dienst vornehmen, da er im Status "wird gestartet" verweilt. Ich kann ihn nicht beenden und nicht den Starttyp ändern.Meine Vermutung ist, dass vom User mal eine Software installiert wurde, die diesen Dienst mit geändertem Starttyp nutzen wollte. Hat wohl nicht geklappt und wurde deinstalliert. Übrig blieb dieses Rudiment.
Werde das mal anschauen, wenn ich wieder dort bin
-
Ich habe letztens auf einem PC folgendes vorgefunden:
- Dienst "Telefonie": Starttyp "Automatisch", Status "Wird gestartet" (ändert sich nicht), abhängig von Dienst "RAS Verbindungsverwaltung"
- Dienst "RAS Verbindungsverwaltung": Starttyp "Automatisch", Status "Gestartet", abhängig von Dienst (u.a.) "Telefonie"Es gelingt mir nicht, den Dienst "Telefonie" zu beenden. Weder per Interaktion im Dienstemenü, noch per Kommandozeilenbefehl. Ursache dafür ist entweder die Tatsache, dass der Dienst ewig im Status "Wird gestartet" verbleibt und/oder dass die Dienste sich wechselseitig bedingen (wie eine Katze, die sich in den Schwanz beißt
).
Ich wollte nun erst mal probieren, ob durch Lösen der Abhängigkeiten der Dienst "Telefonie" beendet werden kann. In der Registry werden Abhängigkeiten unter HKLM\System\CurrentControlset\Services\- dann der entsprechende Servicename und dann der Wert "DependOnService" erfasst. Somit kann ich per Registry-Eingriff das manipulieren. Aber gibt es evtl. auch eine Möglichkeit ohne Registry-Eingriff zum Ziel zu kommen? Rumfummeln an der Registry ist für mich immer das letzte Mittel der Wahl.Achja - warum das Ganze: Dadurch, dass der Telefoniedienst nie startet, bekomme ich im (ca.) 30 Sekundentakt immer einen neuen Eintrag im Systemprotokoll: "...Dienst konnte nicht gestartet werden". Das müllt immer das Protokoll zu, sodass der User beim Start mit einer Warnung (Protokoll voll) begrüßt wird. Auswirkungen auf den PC selbst hat es nicht, da der Telefoniedienst eh nicht gebraucht wird. Aber der User ist dann verunsichert.
-
ich glaube das hab ich mal bei @BugFix gesehen
Ja
- nur dass ich das Dictionary für die Ctrl als Local Static innerhalb der ManageVars-Funktion führe, somit keine globalen Vars 
-
autoBert: Brauch ich nicht testen weil ich so einen Unfug nie machen würde.
@Bioshade: Und schon ist man mal wieder im schönsten Krieg der Paradigmen. Was du so leichthin als Unfug bezeichnest, ist für andere der heilige Gral der Programmierung (Vermeidung Globaler Variablen). Die Diskussion dazu führt zu keinem (sinnvollen) Ergebnis, da die Vertreter beider Seiten keinen Jota von ihrer Meinung abrücken werden (sonst würdest du solch ein Vorgehen ja kaum als Unfug bezeichnen).
Ich tendiere da auch in Richtung @Andy - Das Ergebnis sollte vor allem zählen. Vorgaben sind auch immer ein Stück weit Restriktionen. Warum soll man sich zu etwas zwingen, was man selbst als nicht sinnvoll erachtet und ohne dessen man auch zum Ziel kommt?
Natürlich ist ein Skript, dass schön strukturiert, modular aufgebaut und so für evtl. spätere Änderungen bereit ist eine Augenweide. Aber wie @Andy bereits anmerkte, wird das außer auf der Programmierebene niemand zur Kenntnis nehmen (können) und dem Anwender ist es eh schnuppe und egal.Fazit:
Ich persönlich erachte saubere Strukturen als prima, verdamme aber niemanden, der es nicht gebacken bekommt, wenn am Ende ein gutes Produkt steht.