2016-07-07 2 views
2

У меня возникла проблема с отладкой конкретной проблемы с бумажной бумагой. Кажется, что VB6 не обновляет/не обновляет информацию о принтере во время отладки. Я сузил его до простого кода.Информация для принтеров не освежает при отладке

Private Sub Form_Load() 
    Dim prt As Printer 

    For Each prt In Printers 
     AddOutput prt.DeviceName 
     AddOutput "Paperbin: " & prt.PaperBin 
    Next 
End Sub 

Этот код проходит через все принтеры и показывает их имена и значения бумажной массы. Процедура AddOutput добавляет ее в текстовое поле. Когда я запускаю этот код из VB6 IDE, значение бумаги одинаково для всех принтеров. Когда я компилирую этот код в исполняемый файл и запускаю его, на выходе отображаются правильные значения бумаги. Я узнал, что когда я добавляю часы к объекту prt и сворачиваю информацию, которая правильно обновляется в бумажной коробке. С этого момента среда VB6 IDE использует это конкретное значение бумажной массы для всех принтеров.

Почему VB6 IDE дает неправильное значение, а скомпилированная версия дает правильное значение?

Я тестировал этот код на Windows 7.

Update

Повторение петли по индексу не делают никакой разницы, поэтому использование For i = 0 to Printers.Count -1 имеет такую ​​же проблему, как с помощью For each prt in Printers.

Другие свойства также затронуты. Свойства, такие как PrintQuality, PaperSize и Duplex не обновляются. Свойства DeviceName и Port обновляются корректно.

+0

Прошло много времени с тех пор, как я имел дело с VB6, поэтому я не могу много помочь, но мне любопытно: изменились ли другие свойства объекта Printer при работе в среде IDE? Работает ли он по-другому, если вы зацикливаете по индексу вместо использования для каждого? –

+0

Обновляется ли 'DeviceName' правильно? –

+0

'DeviceName' корректно обновляется. Цикличность по индексу не имеет значения. Другие свойства также выполняются. Я не тестировал их все, но «PaperSize», «Duplex» и «PrintQuality» имеют ту же проблему. – Martin

ответ

0

Хотя редко бывает натыкаться на что-то похожее на ошибку платформы, но в этом случае это похоже на одно. Я рекомендую установить последний пакет обновления (который для VB6 равен Service Pack 6), чтобы убедиться, что у вас есть последние исправления. Я подозреваю (хотя это просто догадка), что причина, по которой она работала при выполнении, но не в IDE, заключается в том, что при компиляции она использовала среду исполнения VB6, встроенную в более новые версии Windows (включая текущие пакеты обновления), но в В среде IDE она использовала среду выполнения IDE (которую вы указали, еще не исправлена).

Смежные вопросы