Usar Dll en VB6.0 desde C#

17/12/2003 - 17:33 por Xty | Informe spam
Hola a todos.
Mi problema es que desde un web service en c# debo llamar
una dll en VB6.0

con la siguiente instancia...

SEGCrypt.clsCryp cCrypto = new SEGCrypt.clsCryp();

se presenta error en la siguiente instrucion...
cCrypto.FlagTipo = true

(Property, indexer, or event 'FlagTipo' is not supported
by the language; try directly calling accessor
method 'SEGCrypt._clsCryp.set_FlagTipo(ref bool)'
)

Para corregir lo anterior utilicé ...
SEGCrypt._clsCryp.set_FlagTipo(true)

pero genera el mensaje de error...
(An object reference is required for the nonstatic field,
method, or property 'SEGCrypt._clsCryp.set_FlagTipo(ref
bool)'
)

Que me falta hacer? Es mi primer intento en c#.
Gracias por su ayuda

Preguntas similare

Leer las respuestas

#1 Sergio Acosta
18/12/2003 - 02:48 | Informe spam
Debería funcionar si usas la instancia cCrypto en vez del nombre de la clase
(el mensjae de error es ambiguo, pareciera que te indica que hagas la
llamada como si fuera un método estático, pero sólo está tratando de
indicarte que el método set_FlagTipo es miembro de la clase SEGCrypt).

Además, como el método recibe un bool por referencia, vas a tener que
declarar una variable.

bool b = true;
cCrypto.set_FlagTipo(ref b)

Si no quieres estar haciendo tantos ajustes te recomiendo que para usar DLLs
hechas en VB6 uses VisualBasic.NET en vez de C#. A mi me gusta mas C#, pero
VB.NET tiene mejor soporte para interop con COM en cuanto a facilidad de
sintáxis se refiere. La gran ventaja es que puedes integrar un assembly
hecho en VB.NET en una apliación de C#.


"Xty" wrote in message
news:066101c3c4bb$7db44340$
Hola a todos.
Mi problema es que desde un web service en c# debo llamar
una dll en VB6.0

con la siguiente instancia...

SEGCrypt.clsCryp cCrypto = new SEGCrypt.clsCryp();

se presenta error en la siguiente instrucion...
cCrypto.FlagTipo = true

(Property, indexer, or event 'FlagTipo' is not supported
by the language; try directly calling accessor
method 'SEGCrypt._clsCryp.set_FlagTipo(ref bool)'
)

Para corregir lo anterior utilicé ...
SEGCrypt._clsCryp.set_FlagTipo(true)

pero genera el mensaje de error...
(An object reference is required for the nonstatic field,
method, or property 'SEGCrypt._clsCryp.set_FlagTipo(ref
bool)'
)

Que me falta hacer? Es mi primer intento en c#.
Gracias por su ayuda
Respuesta Responder a este mensaje
#2 Xty
18/12/2003 - 17:32 | Informe spam
Muchas gracias Sergio, Funcionó OK.
Tengo otra duda de c#

en VB6.0 tengo el codigo...
Dim arData() As Byte
Erase arData() ' Se asegura que el arreglo esté vacio
ReDim arData(0) ' Redimensiona

para hacer lo mismo en c# hice...
byte[] arData;
Erase arData; ' Se asegura que el arreglo esté vacio
ReDim arData[0] ' Redimensiona

pero no reconoce el Erase ni ReDim



Debería funcionar si usas la instancia cCrypto en vez


del nombre de la clase
(el mensjae de error es ambiguo, pareciera que te indica


que hagas la
llamada como si fuera un método estático, pero sólo está


tratando de
indicarte que el método set_FlagTipo es miembro de la


clase SEGCrypt).

Además, como el método recibe un bool por referencia,


vas a tener que
declarar una variable.

bool b = true;
cCrypto.set_FlagTipo(ref b)

Si no quieres estar haciendo tantos ajustes te


recomiendo que para usar DLLs
hechas en VB6 uses VisualBasic.NET en vez de C#. A mi me


gusta mas C#, pero
VB.NET tiene mejor soporte para interop con COM en


cuanto a facilidad de
sintáxis se refiere. La gran ventaja es que puedes


integrar un assembly
hecho en VB.NET en una apliación de C#.


"Xty" wrote in


message
news:066101c3c4bb$7db44340$
Hola a todos.
Mi problema es que desde un web service en c# debo llamar
una dll en VB6.0

con la siguiente instancia...

SEGCrypt.clsCryp cCrypto = new SEGCrypt.clsCryp();

se presenta error en la siguiente instrucion...
cCrypto.FlagTipo = true

(Property, indexer, or event 'FlagTipo' is not supported
by the language; try directly calling accessor
method 'SEGCrypt._clsCryp.set_FlagTipo(ref bool)'
)

Para corregir lo anterior utilicé ...
SEGCrypt._clsCryp.set_FlagTipo(true)

pero genera el mensaje de error...
(An object reference is required for the nonstatic field,
method, or property 'SEGCrypt._clsCryp.set_FlagTipo(ref
bool)'
)

Que me falta hacer? Es mi primer intento en c#.
Gracias por su ayuda




.

Respuesta Responder a este mensaje
#3 Sergio Acosta
18/12/2003 - 18:46 | Informe spam
en C# sería:

byte[] arData;
arData = new byte[0];

Sergio

"Xty" wrote in message
news:07cd01c3c584$7b574e20$
Muchas gracias Sergio, Funcionó OK.
Tengo otra duda de c#

en VB6.0 tengo el codigo...
Dim arData() As Byte
Erase arData() ' Se asegura que el arreglo esté vacio
ReDim arData(0) ' Redimensiona

para hacer lo mismo en c# hice...
byte[] arData;
Erase arData; ' Se asegura que el arreglo esté vacio
ReDim arData[0] ' Redimensiona

pero no reconoce el Erase ni ReDim



Debería funcionar si usas la instancia cCrypto en vez


del nombre de la clase
(el mensjae de error es ambiguo, pareciera que te indica


que hagas la
llamada como si fuera un método estático, pero sólo está


tratando de
indicarte que el método set_FlagTipo es miembro de la


clase SEGCrypt).

Además, como el método recibe un bool por referencia,


vas a tener que
declarar una variable.

bool b = true;
cCrypto.set_FlagTipo(ref b)

Si no quieres estar haciendo tantos ajustes te


recomiendo que para usar DLLs
hechas en VB6 uses VisualBasic.NET en vez de C#. A mi me


gusta mas C#, pero
VB.NET tiene mejor soporte para interop con COM en


cuanto a facilidad de
sintáxis se refiere. La gran ventaja es que puedes


integrar un assembly
hecho en VB.NET en una apliación de C#.


"Xty" wrote in


message
news:066101c3c4bb$7db44340$
Hola a todos.
Mi problema es que desde un web service en c# debo llamar
una dll en VB6.0

con la siguiente instancia...

SEGCrypt.clsCryp cCrypto = new SEGCrypt.clsCryp();

se presenta error en la siguiente instrucion...
cCrypto.FlagTipo = true

(Property, indexer, or event 'FlagTipo' is not supported
by the language; try directly calling accessor
method 'SEGCrypt._clsCryp.set_FlagTipo(ref bool)'
)

Para corregir lo anterior utilicé ...
SEGCrypt._clsCryp.set_FlagTipo(true)

pero genera el mensaje de error...
(An object reference is required for the nonstatic field,
method, or property 'SEGCrypt._clsCryp.set_FlagTipo(ref
bool)'
)

Que me falta hacer? Es mi primer intento en c#.
Gracias por su ayuda




.

Respuesta Responder a este mensaje
#4 Sergio Acosta
18/12/2003 - 18:50 | Informe spam
Naturalmente lo apropiado es que cuando hagas el 'ReDim' del arreglo lo
hagas con el tamaño apropiado, pues un arreglo de 0 elementos no te sirve de
gran cosa

byte[] arData;
arData = new byte[15];

"Xty" wrote in message
news:07cd01c3c584$7b574e20$
Muchas gracias Sergio, Funcionó OK.
Tengo otra duda de c#

en VB6.0 tengo el codigo...
Dim arData() As Byte
Erase arData() ' Se asegura que el arreglo esté vacio
ReDim arData(0) ' Redimensiona

para hacer lo mismo en c# hice...
byte[] arData;
Erase arData; ' Se asegura que el arreglo esté vacio
ReDim arData[0] ' Redimensiona

pero no reconoce el Erase ni ReDim



Debería funcionar si usas la instancia cCrypto en vez


del nombre de la clase
(el mensjae de error es ambiguo, pareciera que te indica


que hagas la
llamada como si fuera un método estático, pero sólo está


tratando de
indicarte que el método set_FlagTipo es miembro de la


clase SEGCrypt).

Además, como el método recibe un bool por referencia,


vas a tener que
declarar una variable.

bool b = true;
cCrypto.set_FlagTipo(ref b)

Si no quieres estar haciendo tantos ajustes te


recomiendo que para usar DLLs
hechas en VB6 uses VisualBasic.NET en vez de C#. A mi me


gusta mas C#, pero
VB.NET tiene mejor soporte para interop con COM en


cuanto a facilidad de
sintáxis se refiere. La gran ventaja es que puedes


integrar un assembly
hecho en VB.NET en una apliación de C#.


"Xty" wrote in


message
news:066101c3c4bb$7db44340$
Hola a todos.
Mi problema es que desde un web service en c# debo llamar
una dll en VB6.0

con la siguiente instancia...

SEGCrypt.clsCryp cCrypto = new SEGCrypt.clsCryp();

se presenta error en la siguiente instrucion...
cCrypto.FlagTipo = true

(Property, indexer, or event 'FlagTipo' is not supported
by the language; try directly calling accessor
method 'SEGCrypt._clsCryp.set_FlagTipo(ref bool)'
)

Para corregir lo anterior utilicé ...
SEGCrypt._clsCryp.set_FlagTipo(true)

pero genera el mensaje de error...
(An object reference is required for the nonstatic field,
method, or property 'SEGCrypt._clsCryp.set_FlagTipo(ref
bool)'
)

Que me falta hacer? Es mi primer intento en c#.
Gracias por su ayuda




.

Respuesta Responder a este mensaje
#5 A.Poblacion
18/12/2003 - 18:53 | Informe spam
Los arrays de C# funcionan de otra forma. Se comportan igual que cualquier
otro objeto, con lo que si quieres borrar uno basta que lo hagas igual a
null, y si lo que quieres es un ReDim, lo que haces es volver a hacer un new
con la nueva dimension:

byte[] arData;
arData = new byte[123];
arData = null; //Es como el Erase
arData = new byte[1]; //Hemos cambiado la dimensión

Otra cosa es que quieras el equivalente del "Redim Preserve". En estos
casos, en lugar de un array lo mejor suele ser usar un ArrayList, cargarlo
de datos, y cuando ya no tenga que cambiar de dimensión, usar la función
ToArray del ArrayList para pasarlo a un array de verdad.


"Xty" wrote in message
news:07cd01c3c584$7b574e20$
Muchas gracias Sergio, Funcionó OK.
Tengo otra duda de c#

en VB6.0 tengo el codigo...
Dim arData() As Byte
Erase arData() ' Se asegura que el arreglo esté vacio
ReDim arData(0) ' Redimensiona

para hacer lo mismo en c# hice...
byte[] arData;
Erase arData; ' Se asegura que el arreglo esté vacio
ReDim arData[0] ' Redimensiona

pero no reconoce el Erase ni ReDim
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida