Alle Probleme wurden hier jetzt im vollen Umfang gelöst!
Wollt ihr immer alles im Detail vorgekaut bekommen? Wie wärs mal mit Hilfe lesen, z.B. zu _WinAPI_LoadString() .
Alle Probleme wurden hier jetzt im vollen Umfang gelöst!
Wollt ihr immer alles im Detail vorgekaut bekommen? Wie wärs mal mit Hilfe lesen, z.B. zu _WinAPI_LoadString() .
Am Ende soll doch wieder eine Zahl als Ergebnis herauskommen und kein String, oder?
Jein ![]()
Von der Umrechnungsfunktion her und direktem Einsatz als Farbwert brauch ich natürlich keinen String. Ich hab das z.B. eingesetzt um die Farbwerte über ein Inputfeld oder einen Slider zu ändern. Wenn der Slider den Wert ändert, soll dann natürlich im Input der zugehörige Farbwert in Hex-Schreibweise auftauchen - deshalb die Stringrückgabe.
Wozu die innere While-Schleife?
While ProcessExists($netskatexe)
;Hauptschleife Wartet auf Fortsetzen
If WinExists("Daten zum Fortsetzen einer Runde exportieren") Then
If WinActive("Daten zum Fortsetzen einer Runde exportieren") And _
MsgBox(4, "Auswahl", "Automatisch ist JA" & @CRLF & "Selbst wählen = NEIM") = 6 Then
ControlSetText("Daten zum Fortsetzen einer Runde exportieren", "", "Edit1", $mail_forts)
Send("{ENTER}")
Sleep(10000)
;MsgBox(0, "", "Ich sende Daten ab", 2)
ControlClick("Daten zum Fortsetzen einer Runde exportieren", "", "[ID:64]")
Sleep(10000)
EndIf
EndIf
WEnd
Füge folgendes einfach an den Anfang deines Skriptes ein:
[autoit]Local $INI = 'Pfad_zu_deiner_INI-Datei'
If Not FileExists($INI) Then IniWrite($INI, 'settings', 'counter', 0)
Local $counter = IniRead($INI, 'settings', 'counter', 0)
$counter += 1
IniWrite($INI, 'settings', 'counter', $counter)
@Inferior: Hook ist hierfür nicht notwendig. Es reicht "_WinAPI_Mouse_Event" mit iFlag: $MOUSEEVENTF_WHEEL. $iData gibt das Delta und somit die Drehrichtung an.
Kann mir von euch jemand vielleicht die KeyValue von MausradAuf und MausradAb sagen?
Meines Wissens gibt es keine - sind ja keine Keys. Es läßt sich aber das Mausauf/ -ab mit entsprechendem Auslesen des Scrollwertes realisieren. Such mal im Forum, hab ich auch schonmal verwendet.
Ich glaube das macht in einem Script nicht so viel aus ^^.
In diesem Einzelfall sicher nicht ;). Wenn die Anzahl der Operationen aber recht groß wird, macht es sich sicher bemerkbar.
Hi,
ich hatte ja mal mit String-Funktionen eine Funktion RGB_to_BGR erstellt.
Nun habe ich das nochmals mit Bit-Operationen nachgestellt. Aber die Stringvariante ist unschlagbar.
Wenn auch ein Unterschied erst ab der 3.ten Nachkommastelle ( 0.03x ms ) erkennbar ist, so ist die Stringvariante doch schneller.
Fazit:
Wenn man die Wahl zwischen String- oder anderen Funktionen hat, sollte man immer zu den Stringfunktionen greifen.
Local $aCol[5] = [0x010203,0xff123e,0xabcdef,0x45aabb,0xeeddaa]
Local $av1, $av2, $t, $ts1 = 0, $ts2 = 0, $min1 = 1000, $max1 = 0, $min2 = 1000, $max2 = 0, $sum1, $sum2
Local $anzahl = 1000
For $i = 1 To $anzahl
$sum1 = 0
$sum2 = 0
For $j = 0 To 4
$t = TimerInit()
RGB2BGR($aCol[$j])
$sum1 += TimerDiff($t)
$t = TimerInit()
_RGB2BGR($aCol[$j])
$sum2 += TimerDiff($t)
Next
$av1 = $sum1 / 5
$av2 = $sum2 / 5
$ts1 += $av1
$ts2 += $av2
If $av1 < $min1 Then $min1 = $av1
If $av1 > $max1 Then $max1 = $av1
If $av2 < $min2 Then $min2 = $av2
If $av2 > $max2 Then $max2 = $av2
Next
ConsoleWrite('String-Variante:' & @CRLF)
ConsoleWrite('Mittelwert: ' & $ts1 / $anzahl & @CRLF)
ConsoleWrite('Minimum: ' & $min1 & @CRLF)
ConsoleWrite('Maximum: ' & $max1 & @CRLF & @CRLF)
ConsoleWrite('Bit-Variante:' & @CRLF)
ConsoleWrite('Mittelwert: ' & $ts2 / $anzahl & @CRLF)
ConsoleWrite('Minimum: ' & $min2 & @CRLF)
ConsoleWrite('Maximum: ' & $max2 & @CRLF & @CRLF)
Func RGB2BGR($iColor) ; String - Variante
Local $sH = Hex($iColor,6)
Return '0x' & StringRight($sH, 2) & StringMid($sH, 3, 2) & StringLeft($sH, 2)
EndFunc
Func _RGB2BGR($RGB) ; Bit - Variante
Return '0x' & Hex(BitAND($RGB, 0xFF), 2) _
& Hex(BitAND(BitShift($RGB, 8), 0xFF), 2) _
& Hex(BitAND(BitShift($RGB, 16), 0xFF), 2)
EndFunc
Wirklich Hochbegabte sind oft arm dran. Aufgrund ihrer herausragenden Fähigkeiten in einzelnen Interessengebieten geben sie durchaus auch mal das Bild des "zerstreuten Professors". Hochkonzentriert und effizient an einer Aufgabe arbeiten (oder für diese Aufgabe leben) - und alles nebensächliche Gedöns wie Kleidung, Frisur oder auch Sozialkontakte bleibt auf der Strecke. ![]()
Seit nunmehr 2 1/2 Jahren bereits vorhanden. ![]()
Link
ZitatNEU 23.02.08:
- Hinzugefügt: _Array2DAdd, _Array2DPop, _Array2DPush
Manchmal hilft die Suchfunktion schon weiter. ![]()
Schau dir mal alle Parameter der Funktion an ![]()
Du kannst ein Rectangle des Windows bestimmen, das neu gezeichnet werden soll.
OK, na dann mal als Code:
Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]Enum $guiMain, $btRead, $btClose, $btSafe, $inBetrag, $inWaehrung, $Anzahl
Global $aGui[$Anzahl]
$aGui[$guiMain] = GUICreate('Test')
GUISetOnEvent(-3, '_Exit')
$aGui[$btRead] = GUICtrlCreateButton('Read', 10, 10, 60, 20)
$aGui[$btClose] = GUICtrlCreateButton('Close', 90, 10, 60, 20)
$aGui[$btSafe] = GUICtrlCreateButton('Safe', 170, 10, 60, 20)
GUICtrlCreateLabel('Betrag', 10, 53, 40)
$aGui[$inBetrag] = GUICtrlCreateInput('', 60, 50, 50, 20)
$aGui[$inWaehrung] = GUICtrlCreateInput('', 115, 50, 50, 20)
GUICtrlCreateLabel('Währung', 170, 53, 70, 20)
GUICtrlSetOnEvent($aGui[$btRead], '_Read')
GUICtrlSetOnEvent($aGui[$btSafe], '_Safe')
GUICtrlSetOnEvent($aGui[$btClose], '_Exit')
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While True
Sleep(100)
WEnd
Func _Exit()
Exit
EndFunc
Func _Read()
MsgBox(0, 'Inhalt Input', GUICtrlRead($aGui[$inBetrag]) & ' ' & GUICtrlRead($aGui[$inWaehrung]))
EndFunc
Func _Safe()
MsgBox(0, '', 'Hier könnte man etwas speichern')
EndFunc
Mein Zitat aus dem Tut ist doch ein Bsp., wie man mit einer Globalen Variablen ($aGUI) alle GUI-Elemente unterbringt. ![]()
Zitat aus meinem Array Tutorial
ZitatAlles anzeigenDie Anzahl Global deklarierter Variablen sollte man so gering, wie möglich halten. Falls es erforderlich ist Variablen Global zu verwenden, bietet es sich an, dafür ein Array zu nutzen.
Hier im Bsp. werden die ID's für GUI und GUI-Ctrls im Array hinterlegt. Vorab werden die GUI/ GUICtrl -Variablen mit Enum durchnummeriert. Enum startet (wenn nicht anders vorgegeben) mit 0, das ist praktisch, da das erste Arrayelement den Index 0 hat. Wir beenden die Enumeration mit der Variablen $Anzahl, welche uns die Anzahl der Arrayelemente angibt.Enum $guiMain, $btRead, $btClose, $btSafe, $inBetrag, $inWaehrung, $Anzahl
Global $aGui[$Anzahl]Nun werden wie üblich GUI und GUICtrl's erstellt. Die Reihenfolge spielt keine Rolle, da der verwendete Variablenname aus der Enumeration eindeutig die Position im Array bestimmt.
$aGui[$guiMain] = GUICreate('Test')
$aGui[$btRead] = GUICtrlCreateButton('Read'...)
$aGui[$btClose] = GUICtrlCreateButton('Close'...)
$aGui[$btSafe] = GUICtrlCreateButton('Safe'...)
$aGui[$inBetrag] = GUICtrlCreateInput('Betrag'...)
$aGui[$inWaehrung] = GUICtrlCreateInput('Währung'...)Der Vorteil:
Obwohl die ID's im Array gespeichert sind, kann ich sie mit: Index = Variablenname verständlich ansprechen. Es ist durchaus vergleichbar mit einem assoziativen Array. Das erleichtert vor allem bei großen Skripten das Lesen.
ZitatWieso funktioniert das nicht!!!!!!!!!!!!!
Schau dir mal die Funktionen an:
- GUISetOnEvent
- GUICtrlSetOnEvent ![]()
$B_DESCENDING als TRUE zu deklarieren ist nicht korrekt.
So klappt es richtig:
Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
[/autoit]
Aber so wie ich es verstanden habe, sollen neue Einträge doch automatisch sortiert werden. Dann kannst du dir den Befehl zum sortieren schenken, wenn du das Listview mit dem Style: $LVS_SORTASCENDING / $LVS_SORTDESCENDING erstellst. ![]()
Achja, RGB to GL geht natürlich auch wesentlich unkomplizierter. ![]()
Func _RGB2GL($RGB)
Local $R = Dec(StringMid("0x" & Hex($RGB,6), 3, 2)) / 255
Local $G = Dec(StringMid("0x" & Hex($RGB,6), 5, 2)) / 255
Local $B = Dec(StringRight("0x" & Hex($RGB,6), 2)) / 255
Return $R & '|' & $G & '|' & $B
EndFunc
GL to RGB:
[autoit]Func _GL2RGB($red, $yellow, $blue)
$red = Hex($red*255,2)
$yellow = Hex($yellow*255,2)
$blue = Hex($blue*255,2)
Return "0x" & $red & $yellow & $blue
EndFunc
Nur mal kurz:
Mit OWNERDRAW kannst du ausschließlich selbst gestalten: Font, TextColor, BkColor. Strichstärken der Gridlines kannst du nicht gestalten.
Ein Listview mit 365 Spalten hat natürlich 365*Zeilenzahl einzelne Zellen. Wenn das Verarbeiten der Infos für eine Zelle nur eine ms dauert, sind das bei 10 Zeilen schon über 3 Sekunden Aktualisierungsdauer.
Ich würde nur einen Monat +/- einer Dekade darstellen.
Kannst es auch mit StringRegExpReplace machen:
[autoit]$t="Hey*ho*ho2"
ConsoleWrite(StringRegExpReplace($t, '(.+)(\*.+\*)(.+)', '$1$3') & @CRLF)
Ein großer Nachteil von Koda ist die sinnlose Code-Erzeugung.
Was du machst geht mit ein paar Codezeilen in einer Schleife. Hab es mal schnell angepaßt.
Mein Tipp: Laß Koda Koda sein und benutze deinen Kopf. Geht schneller und ist effektiver. ![]()
#include <GuiToolbar.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Local $Step, $Toolbar1
Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp
#Region ### START Koda GUI section ### Form=c:\users\user\desktop\easyshowcreator\128-step.kxf
$Step = GUICreate("Step", 670, 675, 199, 129, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS))
Local $aInput[48], $aLabel[48]
Local $x = 74, $y = 80, $x1 = 12, $s
For $i = 1 to 48
$s = "Kanal " & $i
If $i > 24 Then $s = "Verzögerung"
If $i = 13 Then
$x1 = 364
$x = 428
$y = 80
ElseIf $i = 25 Then
$x1 = 164
$x = 244
$y = 80
ElseIf $i = 37 Then
$x1 = 524
$x = 604
$y = 80
EndIf
$aInput[$i-1] = GUICtrlCreateInput("Input" & $i, $x, $y, 57, 21)
$aLabel[$i-1] = GUICtrlCreateLabel($s, $x1, $y, 60, 17)
GUICtrlSetResizing(-1, $GUI_DOCKHEIGHT)
$y += 40
Next
$Edit1 = GUICtrlCreateEdit("", 12, 568, 649, 97)
GUICtrlSetData(-1, "Edit1")
GUICtrlSetResizing(-1, $GUI_DOCKAUTO+$GUI_DOCKHCENTER)
$ToolBar1 = _GUICtrlToolbar_Create($Step)
GUISetState()
_GUICtrlToolbar_AddBitmap($Toolbar1, 1, -1, $IDB_STD_LARGE_COLOR)
[/autoit] [autoit][/autoit] [autoit]_GUICtrlToolbar_AddButton($Toolbar1, $idNew, $STD_FILENEW)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
If BitAND(_GUICtrlToolbar_GetButtonState($ToolBar1, $idNew), $TBSTATE_PRESSED) = $TBSTATE_PRESSED Then
MsgBox(0, '', 'Toolbar "New" geklickt')
; hier den zugehörigen Code einfügen
EndIf
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd