UDF Parameterprüfung

  • Hi,

    schreibe grade eine UDF und bei einigen Funktionen müssen bestimmte Parameter gesetzt sein. Wie wird das üblicherweiße mit der @error Meldung bei nicht gesetzten Variabelen gehandhabt? Wird da für jeden Paramater einfach eine eigene @error-Zahl genommen, nur eine und dafür in @extended dann der genaue fehlende Paramter oder wird es schlicht ignoriert und dem Benutzer soweit "vertraut" das er schon alle Parameter übergeben wird?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (9. März 2010 um 07:40)

  • Hallo.
    Wenn ich es richtig verstanden haben, dann willst du checken ob ein Parameter so ist, wie du es willst.
    Also:

    Angenommen deine Func sieht so aus:
    _Blah($ParamEins, $ParamZwei)
    If $ParamEins <> $DasWasDieVariableSeinMuss Or $ParamZwei <> $DasWasVariableZweiSeinMuss Then
    Return SetError(@error, @extended, AlternativReturn)
    Endif

    Ich hoffe ich konnte ein wenig weiterhelfen.
    MfG. PrideRAge

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • ich denke das ist weit gehendst Dir überlassen.
    Soweit ich das bisher so mitbekommen habe erhälst Du bei einem Fehler (falscher / fehlender Parameter in deinem Fall)
    als @error eine 1

    So kann man im Script auf "If @error Then ..." prüfen.

    @Extended würde ich dann für Details hernehmen.
    z.B.:
    1 - kein Parameter
    2 - Parameter auserhalb des Wertebereichs
    3 - ...

    je nachdem, was Deine UDF eben hergibt an Fehlermöglichkeiten.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Ich handhabe das so:

    Variante 1 - Funktion gibt keinen Ergebniswert zurück
    - jeder auftretende Fehler erhält eigene Fehlernummer, @extended bleibt 0, Rückgabewert 0
    - tritt kein Fehler auf wird die Funktion mit Return 1 abgeschlossen ==> ermöglicht logische Erfolgsabfrage: If _MyFunction() Then


    Variante 2 - Funktion gibt Ergebniswert zurück
    - jeder auftretende Fehler erhält eigene Fehlernummer, @extended bleibt 0, Rückgabewert -1 bzw. ein Wert, den die Funktion bei Erfolg nicht zurückgibt
    - tritt kein Fehler auf wird die Funktion mit Return Rückgabewert abgeschlossen

  • Ich habe es jetzt nach BugFix Methode umgesetzt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.