Funktion aus Funktion heraus nutzen

  • ACHTUNG: Geht weiter in 4ter Antwort

    Hallo,

    ich möchte das eine Funktion auf eine andere Funktion zugreift.
    Ist das überhabt möglich?

    Beispiel:

    [autoit]


    #includes ...
    # gui usw.
    ...

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

    Func ItemWrite($wert)
    $query = "INSERT INTO db SET test = $wert"
    EndFunc

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

    Func ItemInsert()
    $input = InputBox("Neuer Wert", "Bitte Wert für '3' eingeben")
    ItemWrite($input)
    EndFunc

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

    Das ganze ist jetzt stark gekürzt und dient nur als Beispiel.
    Fakt ist jedoch das beide Funktionen so funktionieren. - Wenn ich aber versuche eine Funktion innerhalb einer anderen Funktion versuche aufzurufen, dann findet er die aufzurufende Funktion nicht mehr. (Im Beispiel wird also ItemWrite nicht mehr gefunden)

    Danke für jeden Rat.

    Lg

    Tino, tooliload

    2 Mal editiert, zuletzt von tooliload (24. April 2009 um 17:59)

  • Natürlich ist das möglich, vielleicht so:

    [autoit]


    ;#includes ...
    ;# gui usw.
    ;...

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

    Func ItemWrite($wert)
    Return "INSERT INTO db SET test = " & $wert
    EndFunc

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

    Func ItemInsert()
    $input = InputBox("Neuer Wert", "Bitte Wert für '3' eingeben")
    $query=ItemWrite($input)
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Die Lösung kann ja so einfach sein ... Danke. :P
    Wünsche nen guten Start in´s WE.

    Lg

    Tino

  • Hallo,

    ich nochmal.
    Oben das hat ja wunderbar funktioniert, nun ist aber praktisch das gleiche Problem (Funktion aus einer Funktion aufrufen).

    Sinn des Codes:
    - ListView erstellen aus einer MySQL Abfrage
    - Bei Click auf ListView soll der Inahlt von verschiedenen Editboxen gesetzt werden

    Aktueller Fehler:
    - Er findet die ItemClick - Funktion nicht

    Hier der betroffende Code

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

    Func ItemClick($set)

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

    $selected_old = $set;

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

    GUICtrlSetData($Edit1, $set)
    GUICtrlSetFont($Edit1, 12, 400, 0, "MS Sans Serif")

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

    GUICtrlSetData($Edit2, $set)
    GUICtrlSetFont($Edit2, 9, 400, 0, "MS Sans Serif")
    EndFunc

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

    Func Mysqlbuild($myabfrage)
    $query = $myabfrage
    ; Abfrage
    _MySQL_Real_Query($MysqlConn, $query)
    $res = _MySQL_Store_Result($MysqlConn)
    $fields = _MySQL_Num_Fields($res)
    $rows = _MySQL_Num_Rows($res)
    $array = _MySQL_Fetch_Result_StringArray($res)

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

    For $c = 1 To $rows
    GUICtrlCreateListViewItem($array[$c][1] &"|" & $array[$c][4] & "|" & $array[$c][5] & "|"& $c+1 &"", $ListView1)
    GUICtrlSetOnEvent(-1, ItemClick($array[$c][0]))
    GUISetState()
    Next

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

    ; Abfrage freigeben
    _MySQL_Free_Result($res)
    ; Verbindung beenden
    _MySQL_Close($MysqlConn)
    ; MYSQL beenden
    _MySQL_EndLibrary()
    EndFunc

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

    Ich danke im Voraus. - Sollte es keine Möglichkeit geben, wäre ich auch an einer Lösung interessiert wie man die ID´s der ListItems ändern kann.

    Danke.

    lg

    Tino

  • [autoit]

    GUICtrlSetOnEvent(-1, ItemClick($array[$c][0]))

    [/autoit]

    Wenn ich das richtig weiß, darfst du bei GUICtrlSetOnEvent keine Parameter übergeben. ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Hallo,

    aber wenn eine Funktion das verlangt, muss man das doch irgendwie machen können?
    Danke aber schon mal für den Hinweis.

    Dann bleibt wohl nur die Möglichkeit die ID´s der ListItems irgendwie zu ändern?

    Lg

    Tino

  • Hakko tooliload,

    man zwar kann einer GuiCtrlSetOnEventFunktion keine Parameter übergeben, was spricht aber dagegen vor dem Aufruf die zu übergebenden Werte in einer Globalen Variablen zu speichern und diese dann in der OnEventFunktion zu benutzen,

    mfg (Auto)Bert