【问题标题】:vb6 - Greater/Less Than statements giving incorrect outputvb6 - 大于/小于给出错误输出的语句
【发布时间】:2013-12-14 00:21:03
【问题描述】:

我有一个带有最小值和最大值文本框的 VB6 表单。文本框的 MaxLength 为 4,并且我有 keyPress 事件的代码以将其限制为数字输入。代码检查以确保 max > min,但是它的行为非常奇怪。它似乎是在比较科学计数法或什么的值。例如,它评估 30 > 200 = true,并且 100 > 20 = false。但是,如果我将条目更改为 030 > 200 和 100 > 020,那么它会给我正确的答案。有谁知道它为什么会这样?

我的代码在下面,我使用控件数组作为最小和最大文本框。

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

【问题讨论】:

  • 我假设cnt 应该是“计数?”有点糟糕的缩写,但也因为它根本不是一个计数,而是一个实例或元素的索引,所以它是一个双重糟糕的选择。应该选择变量名称以增加清晰度,并且按照 I、J、K 等长期约定名称作为“一次性”循环索引名称是不错的选择。
  • 谢谢米奇!您的回复也很有帮助,我没有意识到文本框中的值仍然是字符串,我将它们转换为整数并且它评估正确!

标签: textbox vb6 compare operators


【解决方案1】:

对于表示为可变长度文本的数字(通常,不仅仅是 VB6),这就是文本比较的行为方式。

  • 用零填充到固定长度并继续作为文本进行比较(如您所述)

  • (首选)转换成整数,然后比较。

【讨论】:

    【解决方案2】:

    如果我理解正确,您可以将代码更改为

    如果 Val(ParameterMin(cnt)) > Val(ParameterMax(cnt)) 那么

    我想建议一件事——(恕我直言...)如果可能的话,避免在 key_press/key_up/key_down 期间检查数据。

    您可以更改 GUI 以包含“提交”按钮并在那里检查您的“表单”吗?

    希望我能帮上忙……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2021-07-17
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      相关资源
      最近更新 更多