SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: gabio2 en Martes 13 de Marzo de 2012, 16:48

Título: Convertir código de VB6 a C#
Publicado por: gabio2 en Martes 13 de Marzo de 2012, 16:48
Que tal un saludo a todos, actualmente estoy trabajando con los HandPunch modelo 3000, la empresa donde se compraron los HandPunch nos ofrecio un programa (WHVB), que sirve para resetear el HandPunch entre otras cosas, de igual manera ofrecieron documentación de la API rsidll32.dll (para poder extraer toda la información de los HandPunch), ahora bien ya pude resetear el canal de comunicación por el cual se conecta el HandPunch y obtener el Handler, ahora analizando el código fuente del programa WHVB que está hecho en VB6, me encontre con este problema:

Código: Visual Basic
  1. '
  2. '   RSI_READER_INFO
  3. '
  4. Type RSI_READER_INFO
  5.     model As Byte
  6.     memory As Byte
  7.     promDate As RSI_PROM_DATE
  8.     promName As RSI_PROM_NAME
  9.     pad1 As Byte                      
  10.     sn As Long
  11.     snp As Byte
  12.     pad2 As Byte                        
  13.     userCap As Integer
  14.     dlogCap As Integer
  15.     usersEnrolled As Integer
  16.     dlogsPresent As Integer
  17.     reserved As RSI_RI_RESERVED
  18. End Type
  19.  
  20. '
  21. '   RSI_PROM_DATE
  22. '
  23. Type RSI_PROM_DATE
  24.     pd(0 To RSI_LEN_PROM_DATE - 1) As Byte
  25. End Type
  26.  
  27. '
  28. '   RSI_PROM_NAME
  29. '
  30. Type RSI_PROM_NAME
  31.     pn(0 To RSI_LEN_PROM_NAME - 1) As Byte
  32. End Type
  33.  
  34. '
  35. '   RSI_RI_RESERVED
  36. '
  37. Type RSI_RI_RESERVED
  38.     rr(0 To RSI_LEN_RI_RESERVED - 1) As Byte
  39. End Type
  40.  

Ya que tengo muy pocos conocimientos en VB6 estuve investigando y encontre que los Type equivalen a las estructuras en C#.net (struct), ahora el problema es que según las reglas de sintaxis en C#, no se permiten inicializadores de campo de instancia en las estructuras, entonces mi duda es, como puedo declarar lo siguiente en C# :


Código: Visual Basic
  1. '
  2. '   RSI_PROM_DATE
  3. '
  4. Type RSI_PROM_DATE
  5.     pd(0 To RSI_LEN_PROM_DATE - 1) As Byte
  6. End Type
  7.  
  8. '
  9. '   RSI_PROM_NAME
  10. '
  11. Type RSI_PROM_NAME
  12.     pn(0 To RSI_LEN_PROM_NAME - 1) As Byte
  13. End Type
  14.  
  15. '
  16. '   RSI_RI_RESERVED
  17. '
  18. Type RSI_RI_RESERVED
  19.     rr(0 To RSI_LEN_RI_RESERVED - 1) As Byte
  20. End Type
  21.  

Según entendí, debo declarar objetos de tipo Byte[] y decirles de que tamaño van a hacer (RSI_LEN_PROM_NAME-1,etc....)

Alguien tiene alguna idea de como puedo resolverlo?



Saludos y gracias !
Título: Re:Convertir código de VB6 a C#
Publicado por: ematrix en Miércoles 14 de Marzo de 2012, 05:28
Prueba

http://www.icsharpcode.net/opensource/sd/

tiene una opcion para pasarlo a c#

Saludos
Título: Re:Convertir código de VB6 a C#
Publicado por: caperutxa en Miércoles 14 de Marzo de 2012, 08:51
No se si es esto lo que pides pero te paso dos enlace:

http://msdn.microsoft.com/en-us/library/ah19swz4.aspx
http://msdn.microsoft.com/en-us/library/saxz13w4.aspx

El segundo tiene un punto que dice explícitamente:
      Structs can declare constructors that have parameters.

Si bien declaras los tipos para instanciarlos puedes usar un constructor. Te pongo un ejemplo que hay en otra página de la documentación oficial.

public struct CoOrds
{
    public int x, y;

    public CoOrds(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
}

Si bien en este constructor le pasa parámetros puedes buscar otra manera para indicarle los valores iniciales
Título: Re:Convertir código de VB6 a C#
Publicado por: gabio2 en Miércoles 14 de Marzo de 2012, 17:14
ematrix, la página que me enviaste es para un IDE gratuito para C# o VB  (.NET), gracias de igual forma. :)


caperutxa, muchas gracias, sin embargo ya lo probe y no funcionó, debe ser alguna otra cosa lo que tengo mal, sin embargo tú ayuda me sirvió de mucho!!! gracias.