Что такое winsock.index?

Мне дали программу VB6 для преобразования в .NET, и хотя большинство особенностей VB6 я смог выяснить с помощью поиска в Google, есть одна, о которой я просто не имею ни малейшего представления. Используется Winsock, но утилита преобразования заменила его на AxMSWinsockLib.AxWinsock. Старый код ссылается на свойство индекса, которого у AxMSWinsockLib.AxWinsock явно нет, но я не могу понять, что он здесь пытается сделать. Любые идеи?

Public Function PortsOpen(ByRef colWinsock As Collection, ByRef objWinsock As Winsock, ByVal LocalIPAddress As String) As Boolean

Dim Counter As Long
Dim sWS() As String

'Initial to open com. port

Counter = 0

If colWinsock.Count >= objWinsock.Index + 1 Then
    sWS = colWinsock.Item(objWinsock.Index + 1)

person cost    schedule 06.11.2012    source источник
comment
О, это связано с контрольными массивами? Вы устанавливаете массив элементов управления, присваивая одному или нескольким элементам управления одного типа одно и то же имя и устанавливая для свойства Index каждого элемента управления в массиве неотрицательное значение (т. Е. Элементы управления в массив элементов управления обычно индексируется от 0 до на единицу меньше, чем количество элементов управления в массиве).   -  person    schedule 06.11.2012
comment
@pst Я считаю, что вы правы; вы должны опубликовать это как ответ.   -  person Holistic Developer    schedule 07.11.2012


Ответы (1)


В VB6 вам разрешено иметь массив элементов управления, а затем ссылаться на них с помощью индекса. Такого поведения больше нет в .Net

Я считаю, что в вашем случае старый VB6 использовал массивы winsock для облегчения связи с другими узлами.

Например, если исходная форма в VB6 была разработана путем добавления элемента управления WinSock, затем изменения его имени на mySock и затем ручной установки значения свойства Index на 0, он становится mySock (0)

Позже в программе все, что вам нужно сделать, чтобы сделать еще одну копию элемента управления, - это

Dim currentNumberOfWinSocks as Integer
currentNumberOfWinSocks = mySock.UpperBound
Load mySock(currentNumberOfWinSocks + 1)

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

person Ahmad    schedule 07.11.2012