Den Threadtitel hast du aber angepasst, oder Ich hoffe es wenigstens..
Die Hoffnung stirbt zuletzt (und hier auch völlig umsonst - nix angepasst
)
Den Threadtitel hast du aber angepasst, oder Ich hoffe es wenigstens..
Die Hoffnung stirbt zuletzt (und hier auch völlig umsonst - nix angepasst
)
welchen Form Designer benutzt Ihr ?
Hirn und Finger - besser und schneller geht nicht. ![]()
Auf eine Combobox mit dem Stil $CBS_DROPDOWNLIST lässt sich die Funktion nicht erfolgreich anwenden.
Genau, diese Funktion funktioniert ausschliesslich mit dem Style $CBS_DROPDOWN. Deshalb habe ich das auch ausdrücklich in der Funktion erwähnt. ![]()
Wie du schon auf "GetWindowLongPtrW" oder "GetWindowLongW" kommst ist mir schleierhaft. Hängt sicher damit zusammen, dass ich von DllStructGetData und DllCall keine Ahnung habe.
Das ist nur drin um das Include der WinAPI-UDF zu vermeiden. Somit habe ich die Funktionen direkt als Dll-Call eingefügt.
...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.
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.
$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)
Alles anzeigen
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:
$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
Alles anzeigen
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).
$colIISApps = $objWMIService.ExecQuery ("Select * from IIsApplicationPoolSetting")
For $Item In $colIISApps
ConsoleWrite($Item.Name & @CRLF)
Next
Hier 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:
Local $variable
If 'Bedingung' Then
$variable = 'Wert-WAHR'
Else
$variable = 'Wert-FALSCH'
EndIf
Also sage ich mir, pack das in eine Funktion. Gesagt - getan:
Func _If_Then_Else($_condition, $_result_true, $_result_false)
If $_condition Then
Return $_result_true
Else
Return $_result_false
EndIf
EndFunc
Und 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.
Func _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 ;==>_FormatSeconds
Alles anzeigen
Abschließ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