Ermitteln des Max und Min Wertes aus *.csv

  • Ich lasse aus einer csv-Datei mir den Inhalt in ein Array einlesen, dieses splitte ich dann zeilenweise um dann zu ermitteln ob einer dieser Werte größer bzw kleiner als der im vorherigen Array ist.

    Funktioniert soweit schon, nur hab ich eine "Spalte" in der csv, wo die Werte von etwas 8,00 bis etwa 40,00 hin und her pendeln. Habe ich beim Max-Wert zB. 24,5 und einer der folgenden Werte ist plötzlich unter 10 dann wird mir dieser kurioserweise plötzlich als Maxwert angezeigt.
    Und mein Min-Wert geht nie unter 10,00 obwohl es niedrigere Werte gibt ?(

    Spoiler anzeigen
    [autoit]

    If $iWert = 0 Then
    for $iW = 1 to 6 Step 1
    $temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    $temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des ersten Max-Wertes in die GUI aus dem Logfile ; für Ermittlung von höchsten Wert im Logfile
    GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des ersten Min-Wertes in die GUI aus dem Logfile ; für Ermittlung von niedrigsten Wert im Logfile
    Next
    $iWert =1
    EndIf

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

    for $iW = 1 to 6 Step 1
    $Zwischenwert[$iW] = ($Zwischenwert[$iW] + $SplitWert[$iW+2]) ; Zwischenwert für Mittelwertbildung
    If StringReplace($Splitwert[$iW+2], ",", ".") > GUICtrlRead($MaxWert[$iW]) Then ; Ermittelung ob Wert größer wie zuletzt ermittelte höchste Wert
    $temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des neuen höchsten Wertes
    EndIf
    If StringReplace($Splitwert[$iW+2], ",", ".") < GUICtrlRead($MinWert[$iW]) Then ; Ermittelung ob Wert kleiner wie zuletzt ermittelte niedrigste Wert
    $temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des neuen niedrigsten Wertes
    EndIf

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

    Next

    [/autoit]

    das ganze läuft dann in einer weiteren Schleife von 0 bis 720

    Was hab ich hier übersehen bzw. wo ist der Grund für diese Kuriosität?
    Schon mal danke fürs Drüberschauen und Helfen.

    Einmal editiert, zuletzt von Flitzpiepe84 (10. Januar 2014 um 19:07)

  • ausprobiert und siehe da, es löst mein Problem wie von selbst. Jetzt ist zwar mein Bug weg, aber ich weiß trotzdem nicht so richtig warum das ohne das Number() nicht korrekt funktioniert hat.

    Bitte mal um kurze Erklärung warum ohne diese Formatierug zB. 9.40 plötzlich größer wie 36.00 ist. Beziehungsweise wo ich das nachlesen kann...

    • Offizieller Beitrag

    Das "Problem" ist die automatische Typwandlung von AutoIt. Hier geht AutoIt davon aus, dass es sich um Strings handelt und vergleicht Zeichen für Zeichen (von links nach rechts).
    Und "9" ist dabei nunmal größer als "3".
    Mit Number kann man AutoIt dann sagen, dass er numerisch vergleichen soll.