VB6 For Loop 在一个函数中不被接受,在另一个函数中工作正常

标签 vb6 foreach activex

我有一个用 VB6 编写的旧 ActiveX 组件来支持(甚至不必费心要求对其进行现代化改造,这就是我目前拥有的)并且在编译以下代码时它会做一些奇怪的事情:

Dim connectedPrinter As printer
Dim printers() As String

For Each connectedPrinter In printers
    printers(UBound(printers)) = connectedPrinter.DeviceName
Next

它应该做的就是列出所有已连接的打印机。但是,在编译时,VB6 告诉我

For Each control variable on arrays must be Variant

奇怪的是,在相同代码库的另一个函数中,我对不同的任务使用了完全相同的循环(将当前打印机设置为默认值)

Dim pPrinter As printer

For Each pPrinter In printers
    If (pPrinter.DeviceName = sPrinterName) Then
        Set printer = pPrinter
        Exit For
    End If
Next

然而,它被毫不犹豫地接受、编译并且在生产环境中也证明有效。

这是怎么回事?

最佳答案

在问题片段中,您有一个名为 printers 的本地数组,其中隐藏了 Printers 集合。您可以重命名本地数组,或通过将其引用为 VB.Printers 来限定对集合的访问。

关于VB6 For Loop 在一个函数中不被接受,在另一个函数中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956520/

相关文章:

vb6 - 从 VB6 应用程序中生成 .REG 文件?

vb6 - Visual Basic 6 : how to make application visible in taskbar?

php - 如何从 PHP 中的关联数组的内键访问值?

javascript - 避免 ActiveX 保存文件

winapi - 扩展MIDL接口(interface)和COM对象设计

mysql - 动态添加mysql表列

c# - C# 是否有可能在调用具有可选参数的 VB6 方法时出现问题?

java - 有没有办法缩短java中的for-each循环?

c# - Linq Foreach GroupBy 在哪里

javascript - 确定 Silverlight 或 Javascript 中 ActiveX 控件的版本