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

  • rekursivität :(

    • BugFix
    • 28. Oktober 2008 um 00:06

    OK, ich sehe es funktioniert - aber es erschließt sich mir nicht (vllt. auch zu spät heut).
    Also erst mal drüber schlafen.

  • mehrere listviews sortieren

    • BugFix
    • 27. Oktober 2008 um 23:56

    Hast du auch Opt('GUIOnEventMode', 1) gesetzt?

    Ich hab mal in das Sortierbsp. zwei Kontextmenüs eingebaut. Funzt tadellos.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    Opt('MustDeclareVars', 1)

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

    Global $hListView, $B_DESCENDING, $hListView1, $A_DESCENDING, $conmnu1, $conmnu2
    GUICreate("ListView SimpleSort", 400, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_close')
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
    $conmnu1 = GUICtrlCreateContextMenu($hListView)
    GUICtrlCreateMenuItem('Item1', $conmnu1)
    GUICtrlSetOnEvent(-1, '_I1_1')
    GUICtrlCreateMenuItem('Item2', $conmnu1)
    GUICtrlSetOnEvent(-1, '_I1_2')
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
    GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 75)
    $hListView1 = GUICtrlCreateListView("col1|col2|col3", 2, 300, 394, 268)
    $conmnu2 = GUICtrlCreateContextMenu($hListView1)
    GUICtrlCreateMenuItem('Item1', $conmnu2)
    GUICtrlSetOnEvent(-1, '_I2_1')
    GUICtrlCreateMenuItem('Item2', $conmnu2)
    GUICtrlSetOnEvent(-1, '_I2_2')
    GUICtrlSendMsg($hListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line1|X|more_T", $hListView1)
    GUICtrlCreateListViewItem("line2|Z|more_S", $hListView1)
    GUICtrlCreateListViewItem("line3|A|more_P", $hListView1)
    _GUICtrlListView_SetColumnWidth($hListView1, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView1, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView1, 2, 75)
    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
    Global $A_DESCENDING[_GUICtrlListView_GetColumnCount($hListView1)]

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

    While True
    Sleep(100)
    WEnd

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

    Func _close()
    Exit
    EndFunc

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

    Func _I1_1()
    MsgBox(0, '', 'I1-1')
    EndFunc

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

    Func _I1_2()
    MsgBox(0, '', 'I1-2')
    EndFunc

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

    Func _I2_1()
    MsgBox(0, '', 'I2-1')
    EndFunc

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

    Func _I2_2()
    MsgBox(0, '', 'I2-2')
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $hWndListView1, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $hWndListView1 = $hListView1
    If Not IsHWnd($hListView1) Then $hWndListView1 = GUICtrlGetHandle($hListView1)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If ($hWndFrom = $hWndListView) And ($iCode = $LVN_COLUMNCLICK) Then
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    ElseIf ($hWndFrom = $hWndListView1) And ($iCode = $LVN_COLUMNCLICK) Then
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView1, $A_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    EndIf
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • mehrere listviews sortieren

    • BugFix
    • 27. Oktober 2008 um 23:28

    Hast du mal Debugging in den Funcs gemacht, also einfach 'ne MsgBox in die erste Zeile, um zu sehen ob auf das Event regaiert wird?

  • mehrere listviews sortieren

    • BugFix
    • 27. Oktober 2008 um 23:07

    $ContextMenu = GUICtrlCreateContextMenu($ListView1)
    $Rename_Window = GUICtrlCreateMenuItem("Rename Window", $ListView1)
    GUICtrlSetOnEvent(-1, "_Rename_Window")
    $Set_Trans = GUICtrlCreateMenuItem("Set Transparency", $ListView1)
    GUICtrlSetOnEvent(-1, "_Set_Trans")
    $Set_OnTop = GUICtrlCreateMenuItem("On Top", $ListView1)
    GUICtrlSetOnEvent(-1, "_Set_OnTop")

    Das paßt aber gar nicht zueinander.

  • rekursivität :(

    • BugFix
    • 27. Oktober 2008 um 22:51

    Das hatte ich probiert, habs aber nicht lauffähig bekommen, deshalb der Umweg über die Globale Variable.
    Mach mal Pee ;)

    Edit:
    So war mein erster Gedanke

    [autoit]

    Func _Kapital($K0, $p, $n)
    If $n = 0 Then Return $K0
    $n -= 1
    _Kapital($K0 + ($K0 * $p / 100), $p, $n)
    EndFunc

    [/autoit]

    Da $K0 nach dem letzten Aufruf das Gesamtkapital darstellt (kann man in der ersten Zeile ausgeben lassen - stimmt), wäre es logisch diesen Wert mit Return zurückzugeben. Aber das verweigert AutoIt - gibt nur '0' aus. Und ich habe keinen Plan, wie ich den Wert außer über eine Globale Variable von der Funktion zurückbekomme.

  • mehrere listviews sortieren

    • BugFix
    • 27. Oktober 2008 um 22:24

    Hi,
    der Fehler liegt in der Sortiervariable ($B_DESCENDING). Diese wird nur vorab und nicht in der Funktion festgelegt.
    Wenn du 2 LV hast brauchst du zwei unterschiedlich Sortiervariablen.
    Hier mal ein Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $hListView, $B_DESCENDING, $hListView1, $A_DESCENDING
    GUICreate("ListView SimpleSort", 400, 600)
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
    GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 75)
    $hListView1 = GUICtrlCreateListView("col1|col2|col3", 2, 300, 394, 268)
    GUICtrlSendMsg($hListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line1|X|more_T", $hListView1)
    GUICtrlCreateListViewItem("line2|Z|more_S", $hListView1)
    GUICtrlCreateListViewItem("line3|A|more_P", $hListView1)
    _GUICtrlListView_SetColumnWidth($hListView1, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView1, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView1, 2, 75)
    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
    Global $A_DESCENDING[_GUICtrlListView_GetColumnCount($hListView1)]

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $hWndListView1, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $hWndListView1 = $hListView1
    If Not IsHWnd($hListView1) Then $hWndListView1 = GUICtrlGetHandle($hListView1)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If ($hWndFrom = $hWndListView) And ($iCode = $LVN_COLUMNCLICK) Then
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    ElseIf ($hWndFrom = $hWndListView1) And ($iCode = $LVN_COLUMNCLICK) Then
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView1, $A_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    EndIf
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • Zeit Lösung (simple) need help

    • BugFix
    • 27. Oktober 2008 um 21:58
    Zitat von rebell

    Was soll da aber das Sleep 10000 =??

    Das Skript fragt dann nur alle 10 Sekunden die Zeit ab. Eine größere Genauigkeit wirst du wohl nicht brauchen. Ich würde es sogar auf eine Minute setzen.

  • rekursivität :(

    • BugFix
    • 27. Oktober 2008 um 21:56

    Freut mich, wenn es dir ein Lichtlein entzündet hat :rofl: - immer wieder gern.

  • Zeit Lösung (simple) need help

    • BugFix
    • 27. Oktober 2008 um 21:52

    Wenn das Skript erst nach 23 Uhr starten soll, einfach am Skriptanfang:

    [autoit]

    Do
    Sleep(10000)
    Until @HOUR = 23

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

    ; dein weiterer Code

    [/autoit]

    24 Uhr kannst du nicht abfragen - gibt es nicht wirklich:
    23:59:59
    00:00:00

  • rekursivität :(

    • BugFix
    • 27. Oktober 2008 um 21:23

    OK, die Lösung ist so einfach, dass du dich in den Hintern beißen wirst ;)

    [autoit]

    Global $K0 = 1000
    Global $p = 2.5
    Global $n = 5
    Global $K

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

    _Kapital($K0, $p, $n)

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

    MsgBox(0, 'Gesamtkapital', Round($K, 2) & ' €')

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

    Func _Kapital($K0, $p, $n)
    If $n = 0 Then
    $K = $K0
    Return
    EndIf
    $n -= 1
    _Kapital($K0 + ($K0 * $p / 100), $p, $n)
    EndFunc

    [/autoit]

    Wichtig: du kannst aus einer Rekursiven Funktion keinen Wert zurückgeben, deshalb die Globale Deklaration von $K.

  • rekursivität :(

    • BugFix
    • 27. Oktober 2008 um 20:12

    Mal als Tipp, (bischen sollst du ja auch machen ;) )
    Ein rekursives Programm ruft sich selbst auf. Also erstellst du eine Funktion, die den Zinswert für einen Basiszeitraum errechnet. Das Ergebnis wird dem Ausgangswert hinzugefügt und damit die Funktion in sich selbst aufgerufen - sooft, wie der Basiszeitraum im gewünschten Zeitraum vorhanden.

  • Assoziatives Array - pur AutoIt , Aufatmen für "Arrayverweigerer" ;-)

    • BugFix
    • 27. Oktober 2008 um 17:22

    Ich habe es jetzt erst mal für 1D-Array erstellt. 2D ist auch machbar, aber wer sich bisher vor Array "gedrückt" hat (und um diese Zielgruppe anzulocken, habe ich die UDF erstellt), wird vorerst vor 2D-Array noch zurückschrecken. :D

  • Shoutbox auslesen

    • BugFix
    • 26. Oktober 2008 um 21:37

    Schau dir doch GtaSpiders Code an.

  • Help-GUI erstellen?

    • BugFix
    • 26. Oktober 2008 um 20:06

    Super Tipp mit dem Help Maker. Der integrierte Iconmaker ist auch absolute Spitze. :thumbup::thumbup:

  • Shoutbox auslesen

    • BugFix
    • 26. Oktober 2008 um 19:37

    Hier ist die Seite, von der du den Inhalt lesen kannst: http://www.autoit.de/index.php?page=ShoutboxContent
    Das Senden geht auch - aber ich bin mir nicht sicher ob ich das publizieren möchte. Ein Spambot für die Shoutbox ist etwas, worauf wir wohl alle verzichten können (und wollen). ;)

  • lieber "Controlsend" als "Send", aber geht nicht

    • BugFix
    • 26. Oktober 2008 um 17:58

    Ja, es handelt sich hier also um ein von der Softwarefirma selbst erstelltes Control, auf das Windows mit Standardroutinen keinen Zugriff hat. Das behält sich die Software explizit vor. Ist halt Pech - oder wie die Briten sagen: Shit happens.

  • Dim , Local , Global

    • BugFix
    • 26. Oktober 2008 um 17:40

    Nö, genau das nicht, da es ziemlich schwammig definiert ist vom Namespace her.
    Nimm für Variablen, die im Skript und zusätzlich in Funktionen genutzt werden Global, sonst Local.

  • lieber "Controlsend" als "Send", aber geht nicht

    • BugFix
    • 26. Oktober 2008 um 17:36

    Mit Send kannst du einfach an ein Fenster senden, ControlSend erwartet aber als Ziel ein.. Control. ;)
    (z. B. wie im Hilfebsp. die CtrlID des Notepad-Editfeldes)

  • Dim , Local , Global

    • BugFix
    • 26. Oktober 2008 um 17:29
    Zitat von Hilfe AutoIt

    The difference between Dim, Local and Global is the scope in which they are created:
    Dim = Local scope if the variable name doesn't already exist globally (in which case it reuses the global variable!)
    Global = Forces creation of the variable in the Global scope
    Local = Forces creation of the variable in the Local/Function scope

  • Verzweiflung: Decompiling von Autoit Programmen in aktueller Version

    • BugFix
    • 26. Oktober 2008 um 15:49

    Das ist grundsätzlich nicht möglich (und das ist gewollt). Das sind halt Dinge auf die man Obacht geben sollte.
    Kann man nur sagen: Pech gehabt. :S

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™