0

私は .NET に変換する VB6 プログラムを与えられました。VB6 の仕様のほとんどはグーグルで把握できましたが、まったくわからないことが 1 つあります。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)
4

1 に答える 1

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 変数配列を完全にコード側から宣言して、デザイン コントロールを中継せずにこれを回避する必要があります。

于 2012-11-07T12:20:11.100 に答える