Probleme mit Function definieren

  • Guten Abend AutoIt Gemeinde,

    ich versuche gerade meine erste Function zu definieren... Ich sende in die Funktion eine Zahl und möchte als Rückgabewert den "Satz" aus der Select Case Anweisung erhalten...Kann mir bitte jemand uner die Arme greifen?

    [autoit]

    ;Abfrage welche Programme verfügbar sind
    Func _Module_abfragen($Keynumber)
    $Keynumber_value = DllCall($dll, "int", "ConnectKey_std", "int", $Keynumber)
    MsgBox(0,"",$Keynumber)
    If @error <> 0 Then
    MsgBox(0, "Fehler:", "ConnectKey_std error: " & @error)
    Exit
    EndIf
    Select
    Case $Keynumber_value[0] = 0
    $MNa[$Keynumber][0] = "Lizenz verfügbar"
    Case $Keynumber_value[0] = 1
    $MNa[$Keynumber][0] = "Dongle nicht gefunden"
    Case $Keynumber_value[0] = 2
    $MNa[$Keynumber][0] = "Falsche Schlüsselnummer"
    Case $Keynumber_value[0] = 3
    $MNa[$Keynumber][0] = "Sicherheitsfehler"
    Case $Keynumber_value[0] = 4
    $MNa[$Keynumber][0] = "Unbekannter Fehler"
    Case $Keynumber_value[0] = 5
    $MNa[$Keynumber][0] = "Programm/Modul ist nicht registriert"
    Case $Keynumber_value[0] = 6
    $MNa[$Keynumber][0] = "Fehler in Win32 DEVICE_DRIVER"
    Case $Keynumber_value[0] = 7
    $MNa[$Keynumber][0] = "Dongle bereits verbunden"
    Case $Keynumber_value[0] = 8
    $MNa[$Keynumber][0] = "Dongle ist nicht initalisiert"
    Case $Keynumber_value[0] = 9
    $MNa[$Keynumber][0] = "Lizenz abgelaufen"
    EndSelect
    DllCall($dll, "int", "DisconnectKey_std", "int", 0)
    EndFunc

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

    $eee = _Module_abfragen("107")
    MsgBox(0,"",$eee)

    [/autoit]

    Vielen Dank und viele Grüße,
    TOYY1

    Einmal editiert, zuletzt von TOYY1 (23. September 2011 um 09:43)

  • Arbeite lieber mit Switch ist schneller:

    [autoit]


    Switch $Keynumber_value[0]
    Case 0
    $MNa[$Keynumber][0] = "Lizenz verfügbar"
    Case 1
    $MNa[$Keynumber][0] = "Dongle nicht gefunden"
    EndSwitch

    [/autoit]

    Und wenn er was zurückgeben soll solltest du vor der EndFunc ein return $MNa[$Keynumber][0]

    Gruss DevFly

  • Hallo DevFly,

    warum ist Switch schneller? Also ich meine spricht man da von Milisekunden oder wo liegt der Vorteil? Wie gesagt es ist meine erste Funktion und ich weiß nicht recht wie ich mit Return umgehen soll :(...

  • Zu Swtich und Select gibs da ein Thema wo das getestet wurde -> Select vs. Switch

    Genrell muss man je nachdem entscheiden kann ich ein switch nehmen sollte man diesen auch nehmen! In dein fall ergibt es sinn willst du unterschiedlich variablen abfragen wird das mit switch nicht gehen da musste Select nehmen da switch nur die werte einer Variable abfragen kann select kann mehre!

    return macht das was der name auch sagt er gibt eine Variable zurück in dein fall willste wahrscheinlich den Text aus der $MNa[$Keynumber][0] zurück geben daher musste return $MNa[$Keynumber][0] angeben und dann wird dir die funktion das ausgeben!

    Gruss DevFly

  • Guten Morgen DevFly.... Toll es hat funtioniert :) . Danke für die ausführlichen Erläuterungen gestern Abend. Ich werde das bei mir auch mal testen um wieviel Switch gegenüber Select schneller ist.

    Tolles Forum. Ich wünsche dir ein schönes Wochenende.
    Viele Grüße,
    TOYY1