2015-03-03 4 views
0

Я пишу небольшую утилиту в VB6, которая вызывает класс C# .Net (который приносит список принтеров), но при вызове метода C# он бросается ниже ошибки, и я не могу компилировать/запускать приложение. Может ли кто-нибудь помочь в этом?Ошибка: ожидаемая функция или переменная

VB6 Код:

Dim retval As Integer 
Dim tbp As NamespaceXYZ.CGETList 
Dim a As String 
Dim col As New Collection 
Set tbp = New CGETList 
retval = tbp.GetDefaultPrinterAndList(col, a) 

C# определение для метода.

public void GetDefaultPrinterAndList(ref Microsoft.VisualBasic.Collection vntPrinterList, ref string defaultPrinter) 
    { 

ошибка: while calling the C# method, it throws the error

+0

Возможно, вам понадобится использовать строковый массив - возможно, языки смешанных языков могут не работать. –

+0

спасибо за предложение, но сейчас я понимаю, что он выбрасывает эту ошибку, потому что в вышеописанном объекте кода не инициализируется в VB. Когда я добавил часы, обнаружил, что «tbp» установлен в ничто. Любая идея почему? – atp9

+0

Он должен перейти к определенной строке, когда вы получите это компилируемое errro. Какая из них? – MarkJ

ответ

1

Вы объявили tbp, но забыл его инициализацию.

Dim tbp As NamespaceXYZ.CGETList 
'tbp value is currently Nothing 

Set tbp = New NamespaceXYZ.CGETList 
'now it's something. 

Обратите внимание, что выше предполагает, что NamespaceXYZ.CGETList класс имеет конструктор по умолчанию то есть вы можете создать новый объект только с помощью New. У некоторых классов этого нет; они требуют, чтобы вы создавали объекты другими способами.

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