2013-12-14 148 views
0

我有一個VB6窗體,其中包含最小值和最大值的文本框。文本框的MaxLength爲4,我有keyPress事件的代碼將其限制爲數字輸入。代碼檢查以確保max> min,但它表現得非常奇怪。它似乎在比較科學記數法中的值或某物。例如,它評估30> 200 =真,100> 20 =假。但是,如果我將條目更改爲030> 200和100> 020,那麼它會給我正確的答案。有誰知道爲什麼這樣做?vb6 - 大於/小於語句給出不正確的輸出

我的代碼如下,我使用控件數組作爲最小和最大文本框。

For cnt = 0 To 6 
    If ParameterMin(cnt) > ParameterMax(cnt) Then 
     MsgBox ("Default, Min, or Max values out of range. Line not updated.") 
     Exit Sub 
    End If 
Next cnt 
+0

我假設'cnt'應該是指「count?」一種糟糕的縮寫排序,但也因爲它不是一個計數,而是一個實例或元素的索引,那麼這是一個雙倍差的選擇。應該選擇變量名稱以增加清晰度,並且通過長期以來的慣例名稱(如I,J,K)作爲「一次性」循環索引名稱的體面選擇。 – Bob77

+0

感謝米奇!您的回覆也非常有幫助,我還沒有意識到文本框中的值仍然是字符串,我將它們轉換爲整數並正確評估! – Melon

回答

2

這就是文本比較對於表示爲可變長度文本(通常不僅僅是VB6)的數字的表現方式。

  • 要麼用零墊固定長度,並繼續比較文本(正如你指出)

OR

  • (最好)轉換爲整數,然後比較。
0

如果我理解正確的話,你可以修改代碼以

如果val(ParameterMin(CNT))>瓦爾(ParameterMax(CNT))然後

我想提醒一件事 - (恕我直言...),如果可能的話,避免在key_press/key_up/key_down期間檢查數據。

您可以更改GUI以包含「提交」按鈕並檢查您的「表單」嗎?

希望我幫忙...