1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Iniwrite

    • BugFix
    • 11. Juli 2010 um 09:50

    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)

    [/autoit][autoit][/autoit][autoit]

    Local $counter = IniRead($INI, 'settings', 'counter', 0)
    $counter += 1
    IniWrite($INI, 'settings', 'counter', $counter)

    [/autoit]
  • KeyList Mausrad Auf/Ab

    • BugFix
    • 10. Juli 2010 um 19:55

    @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.

  • KeyList Mausrad Auf/Ab

    • BugFix
    • 10. Juli 2010 um 19:45
    Zitat von Schrubber

    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.

  • String-Funktionen sind wirklich sauschnell :D

    • BugFix
    • 10. Juli 2010 um 19:39
    Zitat von anno2008

    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.

  • String-Funktionen sind wirklich sauschnell :D

    • BugFix
    • 10. Juli 2010 um 18:03

    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. :thumbup:
    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.

    Test
    [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func RGB2BGR($iColor) ; String - Variante
    Local $sH = Hex($iColor,6)
    Return '0x' & StringRight($sH, 2) & StringMid($sH, 3, 2) & StringLeft($sH, 2)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
  • Hochbegabt

    • BugFix
    • 10. Juli 2010 um 16:22

    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. ;)

  • _2DArrayAdd

    • BugFix
    • 10. Juli 2010 um 14:51

    Seit nunmehr 2 1/2 Jahren bereits vorhanden. ;)
    Link

    Zitat

    NEU 23.02.08:
    - Hinzugefügt: _Array2DAdd, _Array2DPop, _Array2DPush


    Manchmal hilft die Suchfunktion schon weiter. :)

  • _WinAPI_RedrawWindow()

    • BugFix
    • 6. Juli 2010 um 21:52

    Schau dir mal alle Parameter der Funktion an ;)
    Du kannst ein Rectangle des Windows bestimmen, das neu gezeichnet werden soll.

  • Probleme bei Wertigkeitsbereichen von Variablen

    • BugFix
    • 6. Juli 2010 um 21:37

    OK, na dann mal als Code:

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Enum $guiMain, $btRead, $btClose, $btSafe, $inBetrag, $inWaehrung, $Anzahl
    Global $aGui[$Anzahl]

    [/autoit] [autoit][/autoit] [autoit]

    $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')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Read()
    MsgBox(0, 'Inhalt Input', GUICtrlRead($aGui[$inBetrag]) & ' ' & GUICtrlRead($aGui[$inWaehrung]))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Safe()
    MsgBox(0, '', 'Hier könnte man etwas speichern')
    EndFunc

    [/autoit]
  • Probleme bei Wertigkeitsbereichen von Variablen

    • BugFix
    • 6. Juli 2010 um 20:40

    Mein Zitat aus dem Tut ist doch ein Bsp., wie man mit einer Globalen Variablen ($aGUI) alle GUI-Elemente unterbringt. :rolleyes:

  • Probleme bei Wertigkeitsbereichen von Variablen

    • BugFix
    • 6. Juli 2010 um 20:18

    Zitat aus meinem Array Tutorial

    Zitat

    Die 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.

    Alles anzeigen
    Zitat

    Wieso funktioniert das nicht!!!!!!!!!!!!!


    Schau dir mal die Funktionen an:
    - GUISetOnEvent
    - GUICtrlSetOnEvent ;)

  • Input werte der größe nach ordnen lassen

    • BugFix
    • 4. Juli 2010 um 14:02

    $B_DESCENDING als TRUE zu deklarieren ist nicht korrekt.
    So klappt es richtig:

    [autoit]

    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. ;)

  • OpenGl Farben

    • BugFix
    • 3. Juli 2010 um 10:57

    Achja, RGB to GL geht natürlich auch wesentlich unkomplizierter. ;)

    [autoit]

    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

    [/autoit]
  • OpenGl Farben

    • BugFix
    • 3. Juli 2010 um 10:31

    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

    [/autoit]
  • Listview Subitem BKColor anpassen - je Subitem eine Farbe

    • BugFix
    • 2. Juli 2010 um 21:28

    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.

  • GegenTeil von _StringBetween()

    • BugFix
    • 1. Juli 2010 um 19:50

    Kannst es auch mit StringRegExpReplace machen:

    [autoit]

    $t="Hey*ho*ho2"
    ConsoleWrite(StringRegExpReplace($t, '(.+)(\*.+\*)(.+)', '$1$3') & @CRLF)

    [/autoit]
  • Graphics

    • BugFix
    • 1. Juli 2010 um 14:45

    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. ;)

    Spoiler anzeigen
    [autoit]

    #include <GuiToolbar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $Step, $Toolbar1
    Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #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))

    [/autoit] [autoit][/autoit] [autoit]

    Local $aInput[48], $aLabel[48]
    Local $x = 74, $y = 80, $x1 = 12, $s

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    $Edit1 = GUICtrlCreateEdit("", 12, 568, 649, 97)
    GUICtrlSetData(-1, "Edit1")
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO+$GUI_DOCKHCENTER)

    [/autoit] [autoit][/autoit] [autoit]

    $ToolBar1 = _GUICtrlToolbar_Create($Step)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _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 ###

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Graphics

    • BugFix
    • 1. Juli 2010 um 13:21
    Zitat von AutoTim

    Woran liegt das, oder was habe ich vergessen ?


    "Glaskugel-Reib" - Mist, verdreckt.

    Ohne Code kann ich schlecht sagen, was falsch ist.
    Im Hilfe-Bsp. zu "_GUICtrlToolbar_LoadImages" ist alles ersichtlich.

  • Graphics

    • BugFix
    • 1. Juli 2010 um 13:19

    Habe ich doch geschrieben: ImageIndex
    Du mußt später im Code eine ImageList erstellen. Die dort zugefügten Images haben einen Index (0 fortlaufend). Und den betreffenden setzt du dort ein.

    NB. Für solche GUI-Elemente ist Koda nicht sonderlich geeignet, gerade weil das notwendige "Drumherum" nicht mit erstellt wird.
    Schau in die entsprechende UDF in der Hilfe zu Toolbar, da findest du auch Beispiele.

  • Graphics

    • BugFix
    • 1. Juli 2010 um 12:50

    - in die erstellte Toolbar Rechtsklick ==> NewButton
    - in Eigenschaften ImageIndex zuordnen

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™