Toleranz

  • Hi @ all

    bin schon ewig am tüfteln .. bekomm's aber einfach nicht hin.

    mein Zeil : eine Toleranzbereichs Abfrage.

    d.h. ich habe 3 Werte , $min , $messwert, $max und will am ende einen gut ( 1 ) oder schlecht (0) Ergebniss.

    z.B.

    $min / $messwert / $max / = $ergebniss

    1 / 2 / 3 / = 1

    -1 / 2 / 3 / = 1

    -3 / -2 / -1 / = 1

    -2 / -1 / 3 / = 1

    .. so sollte es sein. ist ja auch logisch ..
    alle anderen Messungen oder halt Möglichkeiten, sollten ja mit 0 zum Ergebnis führen.

    bekomme es aber absolut nicht hin.

    Problem macht mir das negative Vorzeichen.

    hier meine Ansätze: aber nicht wirklich brauch bahr.... ;(

    [autoit]


    While 1

    $min = InputBox("min", "min toleranz eingeben")
    $messwert = InputBox("messwert", "messwert eingeben")
    $max = InputBox("max", "maxtoleranz eingeben")

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

    MsgBox(0, "ergebniss", _toleranzcheck($min, $messwert, $max))

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

    WEnd

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

    Func _toleranzcheck($min, $messwert, $max)

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

    $messwert = StringReplace($messwert, "+", "")
    $max = StringReplace($max, "+", "")
    $min = StringReplace($min, "+", "")

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

    ; werte sind negativ oder normal .. aber alle ohne + zeichen

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

    ;if StringInStr($min, "-") = "1" Then Return 0
    ;if StringInStr($messwert, "-") = "1" Then Return 0
    ;if StringInStr($max, "-") = "1" Then Return 0

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

    If $min < $messwert And $messwert < $max Then
    Return "1"

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

    Else
    Return "0"

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

    EndIf

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

    EndFunc ;==>_toleranzcheck

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

    #cs
    Func _toleranzcheck($messwert, $max, $min)

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

    MsgBox(0,"übergabe",$min & " " &$messwert&" "& $max)

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

    $messwert = StringReplace($messwert, "+", "")
    $max = StringReplace($max, "+", "")
    $min = StringReplace($min, "+", "")

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

    MsgBox(0,"nach umwandlung in reele zahlen",$min & " " &$messwert&" "& $max)

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

    $x = _Max(25, 10) ; Gibt 25 zurück

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

    $ergebniss_max= StringCompare($max, $messwert)
    $ergebniss_min= StringCompare($messwert,$min)

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

    Return $ergebniss_max &" "& $ergebniss_min

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

    EndFunc

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

    #ce

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

    #cs

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

    Func _toleranzcheck($messwert, $max, $min)

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

    $messwert_nativ = StringReplace($messwert, "+", "")
    $messwert_nativ = StringReplace($messwert, "-", "")

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

    If StringInStr($messwert, "+") = "1" Then
    ;MsgBox(0,"","wert = positiv")

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

    If StringInStr($max, "+") = "1" And StringInStr($min, "+") = "1" Then
    $max = StringReplace($max, "+", "")
    $min = StringReplace($min, "+", "")
    If $messwert_nativ > $min And $messwert_nativ < $max Then
    ;MsgBox(0,"","und im tolleranz bereich")
    Return "pg"
    EndIf
    ElseIf StringInStr($max, "+") = "1" And StringInStr($min, "-") = "1" Then
    $max = StringReplace($max, "+", "")
    $min = StringReplace($min, "-", "")
    If $messwert_nativ > $min And $messwert_nativ < $max Then
    ;MsgBox(0,"","und im tolleranz bereich")
    Return "pg"
    EndIf

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

    ElseIf StringInStr($messwert, "-") = "1" Then
    ;MsgBox(0,"","wert = negativ" & StringReplace($parameter[2], "-", ""))
    If StringReplace($messwert, "-", "") > "0.0" And StringReplace($messwert, "-", "") < $min Then
    ;MsgBox(0,"","und im tolleranz bereich")
    Return "ng"
    EndIf

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

    Else
    ;MsgBox(0,"","wert = error ")
    Return "error"
    EndIf
    EndIf
    EndFunc ;==>_toleranzcheck

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

    #ce

    [/autoit]

    Einmal editiert, zuletzt von vivus (3. Dezember 2009 um 17:00)

  • So?

    [autoit]

    Func _Tolerance($min,$wert,$max)
    If Number($min) <= Number($wert) And Number($wert) <=Number($max) Then
    Return True
    Else
    Return False
    EndIf
    EndFunc

    [/autoit]

    edit: thx@ojo

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

    Einmal editiert, zuletzt von L3viathan2142 (3. Dezember 2009 um 15:56)

  • Hi,

    Probier mal:

    If Number ($min) < Number ($messwert) And Number ($messwert) < Number ($max)

    ;-))
    Stefan

  • JAA !! LECK !! der GAIT !!

    s ganze Wochenende !! n schwarzer Bildschirm .. *g*


    und jetzt geht's !!

    jjuuhuuu !! DANKE !!

    jetzt nur noch die Frage .. WARUM ?!

    also dass ich den String in eine numerische Entsprechung umwandeln muss is mir jetzt klar..

    aber warum funktioniert das nicht . mit dem normalen string ?!

    warum numerisch ?!