Du hast bei einem Button 'GUISetOnEvent' verwendet, der braucht aber 'GUICtrlSetOnEvent' ![]()
Beiträge von BugFix
-
-
Ü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] -
Bitte IMMER die Nutzungsbedingungen lesen!
Es gibt so gut wie keinen Internetservice, der automatisierte Zugriffe gestattet.Zitat von TERMS OF SERVICEYou are not allowed to invoke the conversion service directly from other websites or using automated tools.
-
ist doch sowohl das Handling als auch der Schreibaufwand identisch?! Sowohl beim Füllen als auch bei der Abfrage. Gibt es signifikante Geschwindigkeitsunterschiede?
Es gibt einen Vorteil beim Füllen und Auslesen: Du kannst über den Bezeichner ("str Bezeichner;...") die Inhalte assoziativ ansprechen. Das hilft besonders dann, wenn du nach 'ewigen' Zeiten mal wieder die Source anguckst und nicht grübeln mußt, was sich hinter $array[0][1][0][0][1][0] für ein Detail verbirgt.
Geschwindigkeitsmäßig ist ohne Zweifel das Array schneller. -
Also $Array[Kleidungsart(Polo/Pulli/Shirt)][Groesse][Schnittform][Farbe][...]
Es ist relativ praktisch

Da hätte sich aber eine objektähnliche Lösung mittels Strukturen angeboten (und ist wohl besser zu händeln als 6 Dimensionen
).
Etwa in der Form:Spoiler anzeigen
[autoit]$tagARTIKEL = "str Art;str Groesse;str Form;str Farbe"
[/autoit] [autoit][/autoit] [autoit]
Local $aArtikel[100]$aArtikel[0] = DllStructCreate($tagARTIKEL)
[/autoit]
DllStructSetData($aArtikel[0], 1, 'Pulli')
DllStructSetData($aArtikel[0], 2, 'XXL')
DllStructSetData($aArtikel[0], 3, 'cool')
DllStructSetData($aArtikel[0], 4, 'schweinchenrosa') -
Stimmt, hatte ich in dem Moment nicht bedacht. Nun gelöst.:
Spoiler anzeigen
[autoit]Func _Login()
[/autoit]
$source = _INetGetSource("http://tuttifrutti.kilu.de/l33tm3.html")
If Not @error Then
;$sapfelversion1 = StringRegExp($source, '<br> Benutzername: (.*?)<br>', 1)
$sapfelversion2 = StringRegExp($source, '(?:Benutzername: \s*)([\w\d]+)', 3)
$sapfelversion3 = StringRegExp($source, '(?:E-Mail: \s*)([\w\d@.]+)', 3)
;Überprüfe Name + Passwort +++ Soll gucken ob Datein auf Server sind.
EndIf
$index = _ArraySearch($sapfelversion2, GUICtrlRead($Input1))
If Not @error And $sapfelversion3[$index] = GUICtrlRead($Input2) Then
ShellExecute("Server [Tutti].exe", "", @ScriptDir, "open")
Else
MsgBox(64, "Fehler", "Benutzername oder/und E-mail sind Falsch.")
EndIf;### Tidy Error -> func is never closed in your script.
EndFunc -
So, es waren Fehler in den Pattern und beim Vergleich mußt du die Inputs natürlich auch auslesen.
[autoit]
Func _Login()
[/autoit]
$source = _INetGetSource("http://tuttifrutti.kilu.de/l33tm3.html")
If Not @error Then
;$sapfelversion1 = StringRegExp($source, '<br> Benutzername: (.*?)<br>', 1)
$sapfelversion2 = StringRegExp($source, '(?:Benutzername: \s*)([\w\d]+)', 1)
$sapfelversion3 = StringRegExp($source, '(?:E-Mail: \s*)([\w\d@.]+)', 1)
;Überprüfe Name + Passwort +++ Soll gucken ob Datein auf Server sind.
EndIf
If GUICtrlRead($Input1) & GUICtrlRead($Input2) = $sapfelversion2[0] & $sapfelversion3[0] Then
ShellExecute("Server [Tutti].exe", "", @ScriptDir, "open")
Else
MsgBox(64, "Fehler", "Benutzername oder/und E-mail sind Falsch.")
EndIf;### Tidy Error -> func is never closed in your script.
EndFunc -
und Excel ist leider nicht dafür gedacht
Nun, vielleicht nicht dafür gedacht - aber was spricht dagegen, das Diagramm in Intervallen zu aktualisieren? OK, nicht ganz so toll, wie eine laufende Linie. -
Verwende doch Excel-Diagramme. Wie du das lösen kannst, hatte ich dir bereits gezeigt.
-
Oder hier mal mit Zahlen, vergleich selber - ich finde es wenig übersichtlich.
Spoiler anzeigen
[autoit]Local $a[3][2][2]
[/autoit] [autoit][/autoit] [autoit]
$a[0][0][0] = 1
$a[0][0][1] = 2
$a[0][1][0] = 3
$a[0][1][1] = 4$a[1][0][0] = 5
[/autoit] [autoit][/autoit] [autoit]
$a[1][0][1] = 6
$a[1][1][0] = 7
$a[1][1][1] = 8$a[2][0][0] = 9
[/autoit] [autoit][/autoit] [autoit]
$a[2][0][1] = 0
$a[2][1][0] = 11
$a[2][1][1] = 12Local $a[3][2][2] = [[[1,2],[3,4]],[[5,6],[7,8]],[[9,0],[11,12]]]
[/autoit] -
Das machst keinen Sinn bei 3D oder mehr.
[autoit]
Da geht dir die Übersicht verloren. Es ist da besser nach der Deklaration zu befüllen.
Also:Local $a[3][2][2]
[/autoit][autoit][/autoit][autoit]
$a[0][0][0] =
$a[0][0][1] =
$a[0][1][0] =
$a[0][1][1] =$a[1][0][0] =
[/autoit][autoit][/autoit][autoit]
$a[1][0][1] =
$a[1][1][0] =
$a[1][1][1] =$a[2][0][0] =
[/autoit]
$a[2][0][1] =
$a[2][1][0] =
$a[2][1][1] = -
Na du gibst die Anzahl der Dimensionen durch je ein eckiges Klammerpaar an.
[autoit]Local $a[10][2][2]
[/autoit]
Local $a[9][9][9][9] -
Steht in der Hilfe doch schon sauber erklärt.
[autoit]
Aber hier nochmal:; allgemein
[/autoit][autoit][/autoit][autoit]
FileCreateShortcut('kpl_Pfad_der_Datei', 'Linkpfad'); Bsp.
[/autoit]
$Path = 'C:\Programme\Ein_Programm\programm.exe' ; Speicherort des Programms
$Link = @DesktopDir & '\proggi.lnk' ; <== Link auf Desktop als Name "proggi"
FileCreateShortcut($Path, $Link, 'C:\Programme\Ein_Programm') ; <== Angabe WorkDir bei vielen Programmen erforderlich -
_TCPIpToName()
-
TCPNameToIP()
-
Danke Bugfix das du die Tags gesetzt hast und den Spoiler natürlich.
Kannst ja mal probieren, die Tags von Hand zu schreiben: [ spoiler ] [ autoit ] code [ /autoit ] [ /spoiler ]
Natürlich ohne Leerzeichen. -
Probier es mal, indem du als Pattern die Hexwerte der Zeichen verwendest, für deinen zweiten Fall
chr(0)&chr(16)&chr(65) wäre das: "\x00\x10\x41" -
Meinst du sowas:
[autoit]Func _IsInRange($Value, $Von, $Bis)
[/autoit]
If $Value >= $Von And $Value <= $Bis Then Return True
Return False
EndFunc