2016-08-11 3 views
0

У меня возникли проблемы с разбором кода кода C++ для VB.net (и да, я знаю, что вы не будете вставлять код == сделайте это для меня), но я необходимо руководствоваться.Преобразование кода на C++ в VB.net (с использованием while)

C++ пример кода:

int busy=1; 
while (busy == 1) 
{ 
hr = pMarker ->GetBusyStatus (cardnum ,&busy); 
} 
busy=1; 

hr = pMarker ->MarkObj (cardnum,i,90.0); 

VB.net код (что у меня есть, не работает должным образом)

Dim busy As Integer 
hr = pMarker.GetBusyStatus(cardnum, busy) 

While busy = 1 
hr = pMarker.GetBusyStatus(cardnum, busy) 
hr = pMarker.MarkObj(cardnum, i, 90.0) 
End While 

Спасибо за вашу помощь!

EDIT:

Dim busy As Integer=1 

While busy = 1 
hr = pMarker.GetBusyStatus(cardnum, busy) 
End While 

hr = pMarker.MarkObj(cardnum, i, 90.0) 

Я знаю, что я должен использовать занят как ByRef для того, чтобы использовать его как указатель ... Так что, как я могу управлять этим?

+0

Определить _ «не работает должным образом» _. Этот фрагмент не показывает ничего, что должно вызвать какие-либо проблемы, поэтому вы должны быть конкретными с тем, что есть и что не работает. –

+1

ваш код отличается. вы вызываете функцию перед входом в цикл. вы не инициализируете переменную busy перед вызовом функции в первый раз. ваш цикл ошибочен, вы вызываете функцию markobj в цикле, а другой - нет. – dgsomerton

+0

@dgsomerton да, я думаю, что моя проблема есть. Я использовал онлайн-конвертер и конвертировал его в vb.net, но с помощью указателя. Somthing like 'hr = pMarker.GetBusyStatus (cardnum, New Pointer (Of Integer) (занято))' – noidea

ответ

1

Для параметра, передаваемого по ссылке в VB.NET, необходимо определить его как ByRef в определении метода - в вызывающем коде нет ничего, что указывает на его передачу по ссылке (в отличие от C++ & или C# ref). Вы не указали определение GetBusyStatus, но это должно быть примерно так:

Public Function GetBusyStatus(cardnum As String, ByRef busy As Integer) As Integer 
    '... 
    If someCondition Then 
     busy = 0 
    End If 
End Function 
+0

У меня уже есть ответ, это было похоже на это! спасибо – noidea