Melon
Melon

Reputation: 13

vb6 - Greater/Less Than statements giving incorrect output

I have a VB6 form with a text boxes for minimum and maximum values. The text boxes have a MaxLength of 4, and I have code for the keyPress event to limit it to numeric entry. The code checks to make sure that max > min, however it is behaving very strangely. It seems to be comparing the values in scientific notation or something. For example, it evaluates 30 > 200 = true, and 100 > 20 = false. However if I change the entries to 030 > 200 and 100 > 020, then it gives me the correct answer. Does anyone know why it would be acting this way?

My code is below, I am using control arrays for the minimum and maximum text boxes.

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

Upvotes: 0

Views: 360

Answers (2)

Guy Cohen
Guy Cohen

Reputation: 769

If I understood correctly, you can alter the code to

If Val(ParameterMin(cnt)) > Val(ParameterMax(cnt)) Then

I wish to advise one thing -(IMHO...) if possible, avoid checking data during key_press/key_up/key_down .

Can you change the GUI to contain a "submit" button and check your "form" there ?

Hope I helped...

Upvotes: 0

Mitch Wheat
Mitch Wheat

Reputation: 300559

That is how text comparison behaves for numbers represented as variable length text (in general, not just VB6).

  • Either pad with zeros to a fixed length and continue comparing as text (as you noted)

OR

  • (preferable) Convert to integers and then compare.

Upvotes: 2

Related Questions