- 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
$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
;===================================================================================================
; 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