convert - Conversión de un módulo VB6 a VB.NET
convert vb6 to vb.net online (3)
no puede declarar un tamaño inicial en VB.Net, puede establecer su tamaño más tarde utilizando la instrucción Redim en el constructor o cuando sea necesario
Structure AUDINPUTARRAY
Public bytes() As Byte
Public Sub New(ByVal size As Integer)
ReDim bytes(size) '' set size=5000
End Sub
End Structure
En Visual Basic .NET, no puede declarar que una cadena tenga una longitud fija a menos que use el atributo Clase VBFixedStringAttribute en la declaración. El código en el ejemplo anterior causa un error.
Usted declara una cadena sin una longitud. Cuando su código asigna un valor a la cadena, la longitud del valor determina la longitud de la cadena, vea http://msdn.microsoft.com/en-us/library/f47b0zy4%28v=vs.71%29.aspx . por lo que su declaración se convertirá
Private i As Integer, j As Integer, hWaveIn As Integer
<VBFixedString(200)> Private msg As String
Ya casi termino de convertir un módulo de VB6 a VB.NET, pero estoy teniendo problemas con las siguientes 2 citas y me pregunto si hay alguna manera de hacerlo:
Structure AUDINPUTARRAY
bytes(5000) As Byte
End Structure
Estoy intentando cambiar esa línea de bytes a: Dim bytes (5000) como Byte, pero no me permite definir el tamaño en una estructura.
Aquí está el segundo:
Private i As Integer, j As Integer, msg As String * 200, hWaveIn As integer
No tengo ni idea de cómo convertir: msg As String * 200
Puedes hacer esto a través de atributos
Public Structure <StructLayout(LayoutKind.Sequential)> AUDINPUTARRAY
Public <MarshalAs(UnmanagedType.ByValArray, SizeConst := 5000)>
Bytes() As Byte
End Structure
Sugeriría que, al refacturar tu código de VB6 a .net, mires otra vez si deseas emular el mensaje de texto fijo msg As String * 200
. Si estuvieras contando con la cadena de longitud fija para que pudieras cortar caracteres del final, y aún así tener un registro de 200 caracteres, es un código desordenado que depende de los efectos secundarios de una función.
Cuando convertimos desde VB6 (un proceso todavía en curso), aclaramos el propósito del código si establecemos explícitamente la cadena en un bloque de espacios de 200 bytes. Tal vez al declarar:
String msg = String('' '', 200)
(si eso es válido tanto en VB.net como en C #).