2013-02-12 68 views
1

我有一個腳本循環爲8號,跳過負,並返回最大如下:Autohotkey_L數值比較問題

biggest = 0 
entry = 0 
loop, 8 
    { 
    ; MsgBox %A_Index% 
    if NegativeReadings%A_Index% not contains - ;filter out readings that are negative 
     { 
     ; MsgBox % AttributeReadings%A_Index% 
     MsgBox %biggest% 
     ; MsgBox % AttributeReadings%A_Index% 
     if (AttributeReadings[A_Index] > biggest) 
      { 
      biggest := AttributeReadings[A_Index] 
      entry = %A_Index% 
      } 
     } 
    } 
MsgBox %entry% 

當我在一些樣本圖像飼料與100,100,150,100,50,100,110,75,在OCR的回報對象數組正確的結果,但數值比較失敗

我越來越MSGBOX%最大%= 0100100150,150,50,50,50 =>%條目(%)= 8

蹊蹺發生在之間(5 0> 150)我在處理ahk中的數據類型時有點頭緒,歡迎任何幫助

+0

您可能會按字母順序而不是按值來比較值。 >> NegativeReadings%A_Index%不包含 - <<不是檢查數字是否爲負數的好方法。在循環之前和循環內檢查你的值。 – 2013-02-12 09:49:54

回答

0

好吧,我在今晚第二次拍攝時發現它,OCR正在返回一個帶有尾部空格的字符串,所以它導致了字母比較由管理員提到。

用正則表達式修剪它,現在它工作得很好 這裏是任何人的代碼片段誰可能會遇到這種類似的問題

#SingleInstance force 
#Include OCR.ahk 

; sleep 5000 
OCR() 
; global 
    { 
    AttributeReadings := Object() 
    loop, 8 
     { 
     NegativeReadings%A_Index% := GetOCR(730, (136 + (17 * (A_Index - 1))), 35, 17) 
     AttributeReadings[A_Index] := GetOCR(730, (136 + (17 * (A_Index - 1))), 35, 17, "numeric") 
     ; MsgBox % AttributeReadings%A_Index% 
     } 
    biggest = 0 
    entry = 0 
    i = 0 
    loop, 8 
     { 
     ; MsgBox %A_Index% 
     if NegativeReadings%A_Index% not contains - ;filter out readings that are negative 
      { 
      ; MsgBox % AttributeReadings%A_Index% 
      ; length := StrLen(biggest) 
      ; MsgBox %biggest%, %length% 
      number := RegExReplace(AttributeReadings[A_Index], "([space])?", "") 
      MsgBox %number% 
      ; MsgBox % AttributeReadings%A_Index% 
      if (number > biggest) 
       { 
       biggest := number 
       entry := i 
       } 
      } 
      i++ 
     } 
    MsgBox %entry% 
    } 
End:: 
OCR() 
return 

上述基本的代碼從圖像並返回號碼列表讀取第一大非負。至於負濾波部分,它是在OCR中完成的,因爲它適合我的測試用例,您可能需要根據您使用的圖像對其進行修改。