gpt4 book ai didi

VB6 - ByRef 参数类型不匹配错误 - 它在哪里?

转载 作者:行者123 更新时间:2023-12-03 15:09:53 25 4
gpt4 key购买 nike

在我使用 VB6 的 10 多年里,我时不时地收到一个“ByRef 参数类型不匹配”错误,我根本找不到不匹配的地方。在挣扎了一段时间后,我总是以一种或另一种方式强制输入,但这次我想我会问。我包括了所有我认为可能与此有关的代码;但是您现在可以跳过它并在我演示问题后引用它:

公共(public)类型 PBufferType
Location(9) As Integer ' 代码位置
ValueHi(9) As Integer ' Vhi 代码
ValueLo(9) As Integer ' Vlo 代码
Locked(9) As Integer ' 配对状态
Gamma(9) As Single ' 本段与下一段之间的 Gamma
结束类型

Public GammaBuffer(1) As PBufferType ' 主要数据类型

Public SelectedBank 为整数

函数 MeasureLuxAtCode(code As Integer) As Single
调用 TestPatternForm.DrawTestWindow(3, 代码)
MeasureLuxAtCode = MeasureLux(1)
结束功能

问题出现在下面。 “LuxMinTarget = MeasureLuxAtCode(FirstLevel)”行生成“ByRef 参数类型不匹配”错误,表明 FirstLevel 不是整数。

子确定理想LuxCurve()
Dim FirstLevel, FirstDACtoMeasure 为整数
FirstDACtoMeasure = 0
FirstLevel = GammaBuffer(SelectedBank).Location(FirstDACtoMeasure)
LuxMinTarget = MeasureLuxAtCode(FirstLevel)
结束子

但是该死,FirstLevel 是一个整数,不是吗?它是一个 int,它的值是由一个返回 int 的 UDT 设置的,所以我哪里出错了?如果我将它强制为这样的 int:

LuxMinTarget = MeasureLuxAtCode(Int(FirstLevel))

编译器/解释器很高兴。但我不是。

那么这是编译器中的错误还是只是我很密集?

最佳答案

问题在这里:

Dim FirstLevel, FirstDACtoMeasure As Integer

这实际上声明了 FirstLevel作为 Variant而不是作为 Integer如您所料。

这是一个经典的 VB6 陷阱! (而且你不是第一个被它咬伤的人)。

每行声明一个变量可以避免这个问题:
Dim FirstLevel As Integer
Dim FirstDACtoMeasure As Integer

关于VB6 - ByRef 参数类型不匹配错误 - 它在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com