VB6 Для цикла не принимается в одной функции, отлично работает в другой

У меня есть старый ActiveX Component, написанный на VB6 для поддержки (даже не пытайтесь его модернизировать, это только то, что у меня есть в настоящее время), и он делает некоторые странные вещи при компиляции следующего кода:

Dim connectedPrinter As printer
Dim printers() As String

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

Все, что нужно сделать, это составить список всех подключенных принтеров. Но при компиляции VB6 говорит мне, что

Для каждой управляющей переменной на массивах должен быть вариант

Странно то, что в другой функции той же кодовой базы я использую точно такой же цикл для другой задачи (установка текущего принтера по умолчанию)

Dim pPrinter As printer

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

Тем не менее, это принимается без колебаний, компилируется и также наглядно работает в производственной среде.

Что тут происходит?

1 ответ

Решение

В фрагменте проблемы у вас есть локальный массив с именем printers скрывая Printers коллекция. Вы можете переименовать локальный массив или определить доступ к коллекции, ссылаясь на нее как VB.Printers,

Другие вопросы по тегам