2013-02-19 25 views
2

我有一个用VB6编写的旧ActiveX组件,它支持(甚至不打算要求对它进行现代化改造,这正是我目前的做法),它确实有些奇怪编译以下代码时的东西:VB6 For Loop在一个函数中不被接受,在另一个函数中可以正常工作

Dim connectedPrinter As printer 
Dim printers() As String 

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

所有它应该做的是制作一个所有连接的打印机列表。但是,编译时,VB6告诉我,

每个控制变量的数组必须变

什么古怪也就是说,在相同代码库的另一个功能,我用的是针对不同的任务完全一样的循环(设置当前打印机ALS默认)

Dim pPrinter As printer 

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

然而,就是毫不犹豫地接受了,编译以及在生产环境中demonstrably工作。

这是怎么回事?

回答

8

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

+1

这样一个愚蠢的错误......我想这是真的说“没有看到树木”...谢谢! – 2013-02-19 12:14:43

+0

没有看到树林,或没有看到它的部分整体。 – Motes 2013-02-19 14:51:45

相关问题