• Offizieller Beitrag

    Hi,
    um Eingaben zu überprüfen brauchte ich eine Funktion, die die Länge innerhalb eines Bereiches prüft.
    Ich wollte nicht jedes Mal coden: If StringLen($str) >= $x Or StringLen($str) <= $y
    und so ist die Funktion _StringLenBetween(ByRef $STRING, $MIN [, $MAX=-1 [, $BORDER_IN=True]]) entstanden.

    Geprüft werden kann, wie folgt:
    • Länge innerhalb Untergrenze und Obergrenze - Grenzen inklusive ($BORDER_IN=True, Vorgabe)
    • Länge innerhalb Untergrenze und Obergrenze - Grenzen exklusive ($BORDER_IN=False)
    • Untergrenze und Obergrenze können vertauscht übergeben werden
    • Länge ist gleich Untergrenze ($MAX=-1, Vorgabe und $BORDER_IN=True, Vorgabe)

    Beispiel:

    Spoiler anzeigen
    [autoit]

    $str = 'hallo'

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

    If _StringLenBetween($str, 5) Then
    MsgBox(0, 'Genaue Länge', 'Länge = 5')
    Else
    MsgBox(0, 'Genaue Länge', 'Länge <> 5')
    EndIf
    If _StringLenBetween($str, 2, 6) Then
    MsgBox(0, 'Grenzen inklusiv', 'Länge Innerhalb Bereich 2-6')
    Else
    MsgBox(0, 'Grenzen inklusiv', 'Länge Außerhalb Bereich 2-6')
    EndIf
    If _StringLenBetween($str, 5, 1) Then
    MsgBox(0, 'Grenzen inklusiv', 'Länge Innerhalb Bereich 1-5')
    Else
    MsgBox(0, 'Grenzen inklusiv', 'Länge Außerhalb Bereich 1-5')
    EndIf
    If _StringLenBetween($str, 2, 6, False) Then
    MsgBox(0, 'Grenzen exklusiv', 'Länge Innerhalb Bereich 2-6')
    Else
    MsgBox(0, 'Grenzen exklusiv', 'Länge Außerhalb Bereich 2-6')
    EndIf
    If _StringLenBetween($str, 5, 1, False) Then
    MsgBox(0, 'Grenzen exklusiv', 'Länge Innerhalb Bereich 1-5')
    Else
    MsgBox(0, 'Grenzen exklusiv', 'Länge Außerhalb Bereich 1-5')
    EndIf

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

    ;===================================================================================================
    ; Function Name: _StringLenBetween(ByRef $STRING, $MIN [, $MAX=-1 [, $BORDER_IN=True]])
    ; Description:: Prüft ob die Länge eines Strings innerhalb eines gegebenen Bereiches liegt
    ; Wird nur $MIN übergeben wird auf Länge=$MIN geprüft, auch Länge 0 möglich.
    ; $MIN und $MAX können auch vertauscht werden
    ; Parameter(s): $STRING der zu prüfende String
    ; $MIN Untergrenze Länge oder genaue Länge, wenn $MAX=-1
    ; $MAX Obergrenze Länge, mit -1(Vorgabe) deaktiviert
    ; $BORDER_IN wenn 'FALSE' wird nur der Zahlenbereich zwischen $MIN und $MAX geprüft
    ; (Vorgabe 'TRUE' - Gesamtprüfung)
    ; Requirement(s): keine
    ; Return Value(s): Erfolg: TRUE = Länge innerhalb des Bereiches
    ; FALSE = Länge außerhalb des Bereiches
    ; Fehler: @error 1 = Untergrenze < 0 oder nicht numerisch
    ; @error 2 = Obergrenze nicht übergeben bei BORDER-OUT-Modus
    ; @error 3 = Untergrenze = Obergrenze bei BORDER-OUT-Modus
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _StringLenBetween(ByRef $STRING, $MIN, $MAX=-1, $BORDER_IN=True)
    If (Not IsNumber($MIN)) Or ($MIN < 0) Then Return SetError(1)
    If $MAX = -1 Then
    If $BORDER_IN Then
    $MAX = $MIN
    Else
    Return SetError(2)
    EndIf
    Else
    If $MAX < $MIN Then
    Local $x = $MAX
    $MAX = $MIN
    $MIN = $x
    EndIf
    EndIf
    Local $len = StringLen($STRING)
    If Not $BORDER_IN Then
    If $MAX - $MIN < 1 Then Return SetError(3)
    $MIN += 1
    $MAX -= 1
    EndIf
    If $len >= $MIN And $len <= $MAX Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_StringLenBetween

    [/autoit]