【发布时间】:2009-03-27 01:25:33
【问题描述】:
在我使用 VB6 的 10 多年里,我时不时地收到一个“ByRef 参数类型不匹配”错误,我根本找不到不匹配的地方。在挣扎了一段时间后,我总是以一种或另一种方式强制输入,但这次我想我会问。我包括了所有我认为可能与此有关的代码;但是你现在可以跳过它,在我演示问题后参考它:
公共类型 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 argument type mismatch”错误,表示 FirstLevel 不是整数。
子确定理想LuxCurve() Dim FirstLevel, FirstDACtoMeasure 为整数 FirstDACtoMeasure = 0 FirstLevel = GammaBuffer(SelectedBank).Location(FirstDACtoMeasure) LuxMinTarget = MeasureLuxAtCode(FirstLevel) 结束子但是该死,FirstLevel 是一个整数,不是吗?它是一个 int,它的值是由一个返回 int 的 UDT 设置的,所以我哪里出错了?如果我将它强制为这样的 int:
LuxMinTarget = MeasureLuxAtCode(Int(FirstLevel))编译器/解释器很高兴。但我不是。
那么这是编译器中的错误还是只是我太密集了?
【问题讨论】:
-
SelectedBank 和 FirstDACtoMeasure 是在哪里定义的?
-
我编辑了问题以添加这两个变量。 SelectedBank = 全局整数和 FirstDACtoMeasure = 局部整数。
-
只有在调用参数通过引用传递的子/函数时才能得到这个。 SelectedBank、FirstDACtoMeasure、DrawTestWindow()和MeasureLux()的定义是什么?
标签: vb6