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
,