Как передать строки по Ref из VB.NET в VB6 OCX? - PullRequest
0 голосов
/ 31 августа 2010

Мне нужно передать 2 строки из VB.NET в OCX, написанный для VB6.VS2008 помещает оболочку в OCX, но пока вызывается подпрограмма, параметры строки не принимаются правильно.

Я не знаю почему, но я предполагаю, что это потому, что, как я понимаю, в VB6параметры передаются по умолчанию в качестве ссылки, в то время как в VB.NET параметры передаются в качестве значения по умолчанию Bv Val.

Когда я импортировал OCX в VS 2008, кажется, он автоматически установил параметры строки по умолчанию для подпрограммыМне нужно By Val, потому что в информации экспорта ocx ничего не указано.

  1. Есть ли способ переопределить VS 2008, чтобы я мог правильно передать строки в OCX?

  2. Есть ли что-то еще, что я мог бы сделать?

У меня есть 30000 файлов, зашифрованных с помощью FastEncrypt JSoft, который, кажется, обанкротился, иМне нужно включить FastEncrypt в программу VB.NET, чтобы использовать их.

Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 12 января 2011

Microsoft изменила поведение параметров по умолчанию с VB6 на VB.NET. В VB6 значением по умолчанию (если не указано) является ByRef, а в .NET по умолчанию (если не указано) является ByVal.

Конечно, вы можете переопределить поведение по умолчанию и указать либо ByRef, либо ByVal на любом языке, поэтому, если вы переносите некоторый код из VB6 в .NET, если он выглядит как

Public Function Foo(blnOption as Boolean) as Boolean

Эквивалент в VB.NET:

Public Function Foo(ByRef blnOption as Boolean) as Boolean

. Как хорошая практика, я всегда явно указываю это, чтобы любой, кто читает код, знал, и это облегчает перенос кода, потому что вам не нужно не забывать устанавливать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...