VB6 IsNumeric 会错吗?

2023-12-31

是否可以使用 IsNumeric() 测试字符串并使其返回 true,但是当您使用 CInt() 将同一字符串转换为整数并将其分配给整数类型的变量时,它会给出类型不匹配错误?

我问是因为我收到类型不匹配错误,所以我在尝试转换字符串之前使用 IsNumeric() 检查字符串是否为数字,但我仍然收到错误。

我对此感到抓狂。

这是有问题的代码。iGlobalMaxAlternatives = CInt(strMaxAlternatives)是发生错误的地方。

Dim strMaxAlternatives As String
Dim iGlobalMaxAlternatives As Integer
iGlobalMaxAlternatives = 0
bSurchargeIncInFare = True

strMaxAlternatives = ReadStringKeyFromRegistry("Software\TL\Connection Strings\" & sConn & "\HH", "MaxAlt")

If IsNumeric(strMaxAlternatives) And strMaxAlternatives <> "" Then
    iGlobalMaxAlternatives = CInt(strMaxAlternatives)
End If

由于最大整数大小,您可能会发生溢出;货币类型实际上对于大量数字来说效果很好(但要注意任何区域问题)。请参阅下面的编辑以了解 Int64 讨论。

根据 MSDN 文档是数字 http://msdn.microsoft.com/en-us/library/6cd3f6w1.aspx:

  • 如果数据为 IsNumeric,则返回 True 表达式的类型为布尔型、字节型、 小数、双精度、整数、长整型、 SByte、短整型、单个、UInteger、 ULong,或 UShort,或一个对象 包含这些数字类型之一。 如果表达式是,它也会返回 True 一个字符或字符串可以是 成功转换为数字。

  • IsNumeric 如果表达式返回 False 数据类型为 Date 或数据类型 对象并且它不包含 数字类型。 IsNumeric 返回 False 如果表达式是字符或字符串 无法转换为数字。

由于您遇到类型不匹配的情况,可能是 Double 干扰了转换。 IsNumeric 不保证它是一个整数,只是它匹配可能的数字之一。如果数字是双精度数,则可能是区域设置(逗号与句点等)导致了异常。

您可以尝试将其转换为双精度型,然后再转换为整数。

' Using a couple of steps
Dim iValue As Integer
Dim dValue As Double
dValue = CDbl(SourceValue)
iValue = CInt(iValue)
' Or in one step (might make debugging harder)
iValue = CInt(CDbl(SourceValue))

编辑:在您澄清之后,您似乎正在获得溢出转换。首先尝试使用 Long 和 CLng() 而不是 CInt()。不过,条目仍然有可能是 Int64,使用 VB6 会更困难。

我已将以下代码用于 LARGE_INTEGER 和 Integer8 类型(均为 Int64),但它可能不适用于您的情况:

testValue = CCur((inputValue.HighPart * 2 ^ 32) + _
                  inputValue.LowPart) / CCur(-864000000000)

这个例子来自一个LDAP 密码过期示例 http://support.microsoft.com/kb/323750,但就像我说的,它可能会也可能不会在您的场景中起作用。如果你没有 LARGE_INTEGER 类型,它看起来像:

Private Type LARGE_INTEGER
    LowPart As Long
    HighPart As Long
End Type

搜索 LARGE_INTEGER 和 VB6 以获取更多信息。

编辑:对于调试,暂时避免错误处理然后在通过麻烦的行后将其重新打开可能很有用:

If IsNumeric(strMaxAlternatives) And strMaxAlternatives <> "" Then
    On Error Resume Next
    iGlobalMaxAlternatives = CInt(strMaxAlternatives)
    If Err.Number <> 0 Then
        Debug.Print "Conversion Error: " & strMaxAlternatives & _
                    " - " & Err.Description
    EndIf
    On Error Goto YourPreviousErrorHandler
End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VB6 IsNumeric 会错吗? 的相关文章

  • 有没有一种简单的方法将布尔值转换为整数?

    我是 Scala 新手 我发现需要将布尔值转换为整数 我知道我可以使用类似的东西if x 1 else 0但我想知道是否有首选方法 或者语言中内置的东西 即toInt 如果你想混合Boolean and Int操作使用一个implicit如
  • 为什么 Linq Cast<> 帮助器不能与隐式转换运算符一起使用?

    在决定重复投票之前 请阅读全文 我有一个实现的类型implicit cast运算符转换为另一种类型 class A private B b public static implicit operator B A a return a b c
  • 捕获 Exception 对象是否安全

    我使用依赖于异常的 Java 库 简化代码如下 try val eventTime eventTimeString as Date catch case e Exception gt logger error s Can t parse e
  • 更新 KB 2687323 后,VB6 IDE 无法加载 MSCOMCTL.OCX

    Windows 更新安装安全更新后KB2687323 http support microsoft com kb 2687323 我的 VB6 项目无法加载 显示的错误消息是 无法加载 project vbp path MSCOMCTL O
  • 如何从 VB-6 旧应用程序中启动屏幕键盘程序

    我正在尝试从 Windows 10 32 或 Windows 10 64 位计算机上的 VB 6 应用程序中 shell osk exe 过去我们只是简单地使用 Private Sub Command1 Click Dim strTemp
  • 如何避免在 Scala 中使用 asInstanceOf

    目前我的代码需要类转换 val dataWriter BytesDataWriter createDataWriter def createDataWriter p SomeClass p create datawriter asInsta
  • 在 VB6 应用程序中使用 .NET dll

    我在 c net 中编写了一个 dll 它在应用程序中调用另一个第三方 NET dll 当我使用用 c NET 编写的控制台应用程序以及使用以下代码对其进行测试时 效果很好 Assembly u Assembly LoadFrom dllL
  • SQL 中的双冒号 `::` 表示法

    我捡到了某人的代码 以下是其中的一部分WHERE条款 这里的双冒号表示什么 b date completed gt a dc date INTERVAL 1 DAY 7 20 00 它根据 RDBMS 的不同而有所不同 但如果我猜对的话 那
  • 如何将 interface{} 转换回其原始结构?

    我需要一种方法将结构 接口动态转换回其原始对象 我可以在里面添加方法 函数 基本上我需要这样的东西 MyStruct gt Interface gt MyStruct 在最终转换时 除了结构内部的内容之外 我对原始结构一无所知 所以我不能这
  • 输出参数有什么问题?

    在 SQL 和 C 中 我从来都不太喜欢输出参数 我也从未在 VB6 中通过 ByRef 传递参数 依靠副作用来完成某件事只会让我烦恼 我知道它们是一种解决无法从函数返回多个结果的方法 但 SQL 中的行集或 C 和 VB 中的复杂数据类型
  • 是否可以重载 *static_cast* 运算符?

    我定义了一个类A 实际属性无关 是否可以定义一个专业化static cast
  • 将一组 Java 对象转换为另一组对象的最佳方式是什么?

    这是一个真正的新手提出的基本 Java 问题 我有一组实现某个接口 接口 MyIfc 的Java对象 属于 MyClass 类 我有一组这些对象存储在我的类中的私有变量中 声明如下 protected Set
  • RS 232 中断信号

    我有一个RS232信号捕获设备 而且效果很好 我需要一些帮助来理解数据 基本上我们购买它是因为我们正在处理 80 年代末使用串行通信的机器控制器 尽管知道端口参数 但我们运气不佳 从我转储的数据来看 机器控制正在使用中断信号作为其协议的一部
  • 使用 Stringstream 将字符串转换为 Int

    这里有一个小问题 int IntegerTransformer transformFrom std string string stream gt clear std cout lt
  • 对需要强制转换的 Java 泛型感到困惑

    我对以下代码感到困惑 import java util ArrayList import java util LinkedList import java util List public class GenericsTest
  • 防止打开 VB 应用程序的多个实例

    我的 VB6 应用程序由 MS Access 数据库支持 允许用户打开应用程序的多个实例会产生冲突并更改连接的数据库 理想的解决方案是 如果用户尝试打开新实例 则关注现有实例 我怎样才能达到这个目的 Use App PrevInstance
  • 我可以在C中直接比较int和size_t吗?

    我可以比较一个int and a size t像这样的变量 int i 1 size t y 2 if i y Do something 或者我必须输入其中之一 只要满足以下条件 它就是安全的int为零或正数 如果它是负数 并且size t
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • reinterpret_cast 到 C 样式数组是非法的 C++11 吗?

    为什么下面的代码不受欢迎 double d 4 0 1 2 3 reinterpret cast
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我

随机推荐

  • 使用 PHP / CURL 通过 FTP 获取修改日期

    我似乎遇到了 CURL 与 FTP 的文档干旱 谁能告诉我如何使用 PHP CURL 获取给定文件的最后修改日期 非常感谢 试试这个 它在这里似乎工作正常 但我只在一台服务器上测试过
  • GetSafeHtmlFragment 删除所有 html 标签

    我在我的网站中使用 GetSafeHtmlFragment 我发现除了 p and a 已移除 我查了一下 发现微软没有解决这个问题 有没有替代方案或者有什么解决方案 Thanks 令人惊讶的是 微软在 4 2 1 版本中对 4 2 XSS
  • 如何将数据从 NSDictionary 绑定到 NSTableView?

    有谁知道如何使用 NSDictionary 中的绑定值填充 NSTableView 提前致谢 您需要创建一个NSDictionaryController在界面生成器中 将其绑定到您的字典 然后绑定NSTableView到 中的对象NSDic
  • 用户设置的数据库表结构

    我需要添加一个表来存储用户设置 用户将首次拥有大约 10 种不同的设置 但我确信还会有更多 您建议使用哪种可扩展的数据库表结构来存储用户设置 任何帮助将不胜感激 谢谢你 设置表列 setting id 设置代码 设置名称 设置描述 用户表列
  • Azure DevOps:为所有项目中的所有存储库设置 Git 分支权限

    有没有办法为 Azure DevOps 中的所有当前和未来存储库和项目中的所有当前和未来分支设置 强制推送 权限 目前 我们有大约 50 个项目 每个项目都有一个存储库和多个分支 在每个存储库的每个分支中设置权限将需要大量手动工作 而且容易
  • event.preventDefault() 和多个事件

    在我开始编写大量不起作用的代码之前 我想我应该问这个问题 event preventDefault 仅取消点击事件的默认操作不是吗 理论上 我应该能够将 jQuery 中的多个单击事件处理程序绑定到给定目标 以执行不同的操作 例如 Ajax
  • 如何将文件添加到解决方案文件夹?

    我正在使用以下脚本回答here https stackoverflow com questions 47628034 how to create a solution folder for a solution in visual stud
  • 如何在asp.net mvc中处理分页?

    我正在使用 asp net mvc 我想将分页添加到记录列表中 请提供任何链接或示例代码帮助 Thanks 使用 ASP NET MVC 演示进行分页 http blogs taiga nl martijn 2008 08 27 pagin
  • TFS 构建中增量变量值 +1

    我有一个 Microsoft Visual Studio Team Foundation Server 版本 15 117 26714 0 带有预定义变量 ProjectBuildNumber 在构建过程中 是否有任何方法可以将次要构建号的
  • 用于计算文件中单词出现次数的 Shell 脚本 [重复]

    这个问题在这里已经有答案了 我们以下面的内容为例 This file is a test file this file is used to count the word file in this test file there are m
  • 无法使用 pip 安装 pygame,因为为 pygame 运行 vsetup.py bdist_wheel 时出现错误 [重复]

    这个问题在这里已经有答案了 我正在尝试在 anaconda 安装上安装适用于 Python 3 的 pygame I run pip install pygame 并输出以下内容 Collecting pygame Using cached
  • 有条件地将一个向量乘以另一个 r

    我有以下向量 trans lt c 2 3 10 5 2 56 0 我想将每个元素乘以两个向量的选择 具体取决于初始数是正数还是负数 negtrans lt c 1 2 3 postrans lt c 4 5 6 7 结果应该是这样的 2
  • 是否可以删除对象本身,而不是引用

    var a example true var x a y a delete x 0 console log y 在上面的代码中 是否可以删除 x 中的引用 而不仅仅是引用 这取决于垃圾收集器 只要有对该对象的一些引用 它就不会被垃圾收集 如
  • python matplotlib.pyplot log-log 绘图点未显示,因为 python 选择的 y 范围很差

    在以下生成双对数图的代码中 Python 选择了一个不显示散点图上的点的 x 范围 import matplotlib pyplot as plt plt scatter 005 005 1 2 plt xscale log plt ysc
  • 如何在 Ruby 中使用单例设计模式创建类?

    单例模式是一种设计模式 用于将类的实例化限制为一个对象实例 虽然我知道如何用 C 和 Java 编写单例模式 但我想知道是否有人知道如何在 Ruby 中实现它 其实 上面的回答并不完全正确 require singleton class E
  • 滚动时焦点随机跳跃

    我有一个和很多人一起的活动EditText它们附近的控件和复选框 默认情况下 大多数EditTexts被禁用 当我打开活动时 一些随机的EditText控件获得焦点 它周围有一个框架 如果您点击它 屏幕键盘就会出现 即使EditText被禁
  • 为什么要使用 Unicode 签名字节顺序标记 (BOM)?

    这些已经过时了吗 它们似乎是有史以来最糟糕的想法 在文件内容中嵌入一些没人能看到的东西 但却会影响文件的功能 我不明白为什么我想要一个 是的 它们在某些情况下是必要的 因为 UTF 16 有小端和大端两种实现 当读取未知的 UTF 16 文
  • mdDialog:捕获 onClose 事件

    我正在以角度创建一个邮箱 当发送消息的弹出窗口关闭时 我需要保存草稿消息 我知道有一些替代方案 scope on destroy function saveMessage and mdDialog show finaly function
  • 如何并排显示回收者视图项目

    我们怎样才能显示RecyclerView并排的项目 我试图通过使用来做到这一点FlowLayoutManager and FlexboxLayoutManager但它仅以列表格式显示 这里是代码FlowLayoutManager FlowL
  • VB6 IsNumeric 会错吗?

    是否可以使用 IsNumeric 测试字符串并使其返回 true 但是当您使用 CInt 将同一字符串转换为整数并将其分配给整数类型的变量时 它会给出类型不匹配错误 我问是因为我收到类型不匹配错误 所以我在尝试转换字符串之前使用 IsNum