![]()
Da war ich jetzt auf dem falschen Dampfer. Wenn der Vergleichswert kein Dualwert ist, ergibt sich als Ergebnis der Dualwert, der sowohl in Summe als auch Vergleichswert enthalten ist. In diesem Fall 8 - und somit hast du recht.
Ich war etwas daneben, da ich als Vergleichswerte ausschließlich eigenständige Dualwerte verwende, sonst ist ja die Boolsche Abfrage nicht eindeutig. Denn BitAND(10,9) und auch BitAND(10,2) liefern True.
Beiträge von BugFix
-
-
Bsp.
[autoit]Func _MeineFunktion($Parameter, ....)
[/autoit][autoit][/autoit][autoit]
; Code
; Code
Return $Rueckgabewert ; falls die Func einen Wert liefern soll
EndFunc; Aufruf
[/autoit]
$Rueckgabewert = _MeineFunktion() ; falls Parameter nötig, natürlich übergeben. -
Steh ziemlich auf dem Schlauch, weil ich nicht vertsehe warum ausgerechnet in einer If-Abfrage das BitAnd einen booleanwert zurückgeben sollte....
Der Booleanwert ist nicht wirklich da.
Wenn die Abfrage ohne Ergebnis ist, wird 0 zurückgegeben und das wird in AutoIt ebenso wie False interpretiert. Jeder Wert größer Null ist in der Interpretation True.
Somit kann man Abfragen, bei denen der Rückgabewert vordergründig nicht weiter genutzt wird, zur besseren Übersicht einfach als Boolean nutzen.BitAnd(10,9) <== Hier gilt doch, dass 9 als Bitwert nicht in 10 enthalten ist - also falsch.
Oops, ich sollte selber öfter mein Tut lesen, da war ich daneben.
-
Kann ich nicht nachvollziehen.
Schau mal in Zeile 120 des Includes, dort erfolgt die Deklaration. (Include öffnen: Mit Cursor in die Include-Zeile, dann Alt+i)
Global $__IEAU3V1Compatibility -
Du hast hier zwei Sachen:
Einmal werden zwei einzelne Variablen auf Inhalt geprüft und wenn bei beiden der Inhalt stimmt ist die If-Abfrage wahr:
If Var1=Wert1 AND Var2=Wert2 Then
Das AND verknüpft nur die Bedingungen.Ein anderes mal hat man eine Variable, die mehrere Bitwerte trägt. Mit BitAND wird geprüft, ob ein Vergleichswert enthalten ist:
If BitAND(Var, Vergleichswert) ThenPS: Schau mal in meine Signatur - Bit-Tut
Edit:
[autoit]
Hier mal für dein Bsp.:Local $recht = 0x00100001 ;Daten lesen-Recht
[/autoit][autoit][/autoit][autoit]
Local $ausgelesen = 0x001F01FF ; -> Bsp: User hat VollzugriffLocal $sumRechte = BitOR($recht,$ausgelesen)
[/autoit][autoit][/autoit][autoit]If BitAND($sumRechte, $recht) Then ; Daten Lesen
[/autoit]
If BitAND($sumRechte, $ausgelesen) Then ; Vollzugriff -
denn wenn in der log-Datei nichts passiert, braucht man auch keine Schleife ständig "im Kreis herum rennen" zu lassen
Eine Schleife mußt du in jedem Fall 'rennen' lassen.
Du kannst natürlich mal prüfen ob dein Programm die Logdaten unter einer festen Speicheradresse parkt. Dann könntest du dort abfragen.
Aber ich halte das Lesen der LogDatei für einfacher. Du brauchst doch nur deine Anzeige aktualisieren, wenn sich in der Logdatei was geändert hat. (z.B. Zeilenzahl als Referenzwert speichern und vergleichen) -
@Gummibaer
OK, aus deinem Zitat wird zumindest deutlich, dass sich Beschränkungen ausschließlich auf die ICQ-Software beziehen.
Bei Nutzung anderer Messenger gelten deren Bedingungen. -
autoBert
Die Nutzungsbestimmungen sind m.E. schon seltsam.
1. nicht wirklich eindeutig
2. Freigabe des OSCAR-Protokolls und dadurch
3. Zugriffsermächtigung für alle Multi-Messenger und
4. SelbstprogrammiererIch habe zum Bsp. noch nie ICQ auf meinem PC installiert gehabt und in den Nutzungsbestimmungen der Multimessenger hab ich meines Wissens keine derartigen (ICQ-spezifischen) Hinweise gefunden.

BTT:
Da kann ich leider nicht wirklich helfen, da ich wie eben geschrieben, ICQ nicht installiert habe. -
Style: $WS_POPUP

-
Ich habe keine Doku zum Objekt WMPlayer gefunden.
Bist du dir sicher, dass es die Methode .open mit Parameter Datei gibt ?
Ist es nicht evtl. eine Zuweisung? $oWMP.File = 'Deine_Datei' -
Du hast mehr Chancen auf Antworten, wenn du dein Skript postest (nicht anhängen).
Dann kann man schnell mal einen Blick draufwerfen ohne es erst runterladen zu müssen. Ich bin viel zu faul zum Downloaden.
-
Das hab ich garnicht gewußt
Ich hab das nur mal zufällig gemerkt, als ein DllCall über @error keinen Fehler brachte, $ret[0] aber 0 lieferte. Seitdem prüfe ich auf Rückgabewert. -
Nun hab ich das Problem, dass Dircopy die Gui solange blockiert, bis der Ordner kopiert ist.
Ich weiß ja nicht, was du sonst noch vorhast - aber den nächsten Kopiervorgang kannst du eh erst ausführen, wenn der aktuelle durch ist. Zum Thema kopieren schau dir mal Oscars _MultiFileCopy an. -
Jetzt Flackert es bei mir so wild, was fehlt den noch?
[autoit]
Es fehlt nichts, es ist zu viel.
Du mußt beim Auswerten von GUIGetMsg() die Checkbox als Case eintragen.Switch GUIGetMsg()
[/autoit]
Case $Checkbox
If BitAnd(GUICtrlRead($Checkbox), $GUI_CHECKED) Then ...Und verwende bitte AutoIt-Tags und Spoiler!
-
[autoit]Wie frage ich richtig ab?
If BitAnd(GUICtrlRead($CheckBox), $GUI_CHECKED) Then ; ist markiert
[/autoit] -
Brauchst doch nur die Arrays in geschachtelten Loops auslesen und dann wegschreiben.
-
Du hast bei einem Button 'GUISetOnEvent' verwendet, der braucht aber 'GUICtrlSetOnEvent'

-
Übrigens kannst du Koda aus SciTe heraus nur öffnen, wenn du dich in einer existierenden .au3-Datei befindest.
Also erst: Datei-Neu, Speichern als: *.au3, und dann Alt+m zum Start von Koda. -
Du mußt nur das aktive TabItem abfragen und in der Auswertung überprüfen.
Habe es mal angepaßt.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiTab.au3>
Global $Tab$wintitel = "Form1"
[/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 400,400)
$Tab = GuiCtrlCreateTab(5, 5, 380, 380)
GuiCtrlCreateTabItem("Tab 1")
$Button1 = GUICtrlCreateButton("exit", 10, 100, 61, 31, 0)
GuiCtrlCreateTabItem("Tab 2")
$Button2 = GUICtrlCreateButton("exit", 100, 100, 61, 31, 0)
GuiCtrlCreateTabItem("Tab 2")
$Button2 = GUICtrlCreateButton("exit", 200, 100, 61, 31, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Exit
EndSwitch
_Tooltip()
Sleep(10)
WEndFunc _MouseOver($_mo_x, $_mo_y, $_mo_width, $_mo_height)
[/autoit] [autoit][/autoit] [autoit]
If Not WinActive($wintitel) Then Return ; WICHTIG!!!!! NUR WENN DAS FENSTER AKTIV IST MOUSOVER PRÜFEN
$_mo_pos = GUIGetCursorInfo()
If ($_mo_pos[0] > $_mo_x) and ($_mo_pos[0] < $_mo_x + $_mo_width) and ($_mo_pos[1] > $_mo_y) and _
($_mo_pos[1] < $_mo_y + $_mo_height) Then Return 1
Return 0
EndFuncFunc _Tooltip()
[/autoit] [autoit][/autoit] [autoit]
$currTab = _GUICtrlTab_GetCurSel($Tab)
$tooltip_sleep = '50'
;Spieler1-----------------------------------------------------------------------------
If _MouseOver(10, 100, 61, 31) And $currTab = 0 Then
Do
ToolTip ("Button Tab 1",Default,Default,'Test1',1)
Sleep($tooltip_sleep)
Until _MouseOver(10, 100, 61, 31) = 0
ToolTip('')
EndIf;Name2-----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
If _MouseOver(100, 100, 61, 31) And $currTab = 1 Then
Do
ToolTip ("Button Tab 2",Default,Default,'Test 2',1)
Sleep($tooltip_sleep)
Until _MouseOver(100, 100, 61, 31) = 0
ToolTip('')
EndIf;Name3-----------------------------------------------------------------------------
[/autoit]
If _MouseOver(200, 100, 61, 31) And $currTab = 2 Then
Do
ToolTip ("Button Tab 3",Default,Default,'Test 3',1)
Sleep($tooltip_sleep)
Until _MouseOver(200, 100, 61, 31) = 0
ToolTip('')
EndIf
EndFuncEdit:
Ich hab dir mal die Funktion _Tooltip() noch 'verschlankt'.
[autoit]Func _Tooltip()
[/autoit]
$currTab = _GUICtrlTab_GetCurSel($Tab)
$tooltip_sleep = '50'
Local $aButton[3][6] = [[10,100,61,31,'Button Tab 1','Test1'],[100,100,61,31,'Button Tab 2','Test2'],[200,100,61,31,'Button Tab 3','Test3']]
If _MouseOver($aButton[$currTab][0], $aButton[$currTab][1], $aButton[$currTab][2], $aButton[$currTab][3]) Then
Do
ToolTip ($aButton[$currTab][4],Default,Default,$aButton[$currTab][5],1)
Sleep($tooltip_sleep)
Until Not _MouseOver($aButton[$currTab][0], $aButton[$currTab][1], $aButton[$currTab][2], $aButton[$currTab][3])
ToolTip('')
EndIf
EndFunc -
Die Auswertung des DllCall über @error ist nicht immer erfolgreich.
[autoit]
Da der DllCall stets ein Array liefert und $ret[0] bei einem Fehler =0 ist, ist es m.E. günstiger darauf zu prüfen.; im Bsp. statt:
[/autoit][autoit][/autoit][autoit]
If Not @error Then Return $iCount[0]; lieber:
[/autoit]
If $iCount[0] Then Return $iCount[0]