• Lunes 12 de Mayo de 2025, 17:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Neopro

Páginas: 1 ... 8 9 [10] 11 12 13
226
C# / Re: Al Depurar Se Cae El Programa...
« en: Miércoles 25 de Abril de 2007, 18:15 »
Gracias, me porporcionaron un codigo parecido que utiliza las funciones que yo utilizo pero en Visual C++, ahora ejecuto ambos programas y puedo revisar los valores que estan en cada una de las funciones.

Uno de los problemas de los que me he percatado, es que en C++ un valor unsigned char pasando asignado con "malloc" (con lo cual se puede decir que es parecido a char[] en C#), muestra perfectamente los valores del archivo RAW con los que trabajo, mientras que en C# no he podido dar con lo mismo, o siemplemente al pasar los valores de Byte[] a Char[], creo que mi inquietud pasa por poder enviarle solo un char con todos los valores, lo que pasa a la funcion es el valor en byte y su referencia en ASCII, y solo quiero la referencia en ASCII.

En C++

Código: Text
  1. var  = (unsigned char *)malloc(200000);
  2.  

En C#


Código: Text
  1. char*[] var = new char*[200000];
  2.  

o

Código: Text
  1. char* var = stackalloc char[200000];
  2.  

Esas son mis dudas, porque la segunda opcion no me permite asignarle el RAW que estoy capturando, que por funcion debe estar en byte[]

Y ese valor es fundamental el evaluar las otras expresiones.

227
C# / Re: Cansado De Dllimport
« en: Martes 24 de Abril de 2007, 21:38 »
La llamada a la DLL
Código: Text
  1.        
  2. [DllImport("Bimcot.dll", EntryPoint = "Bim_FIStoFMP5", SetLastError = true,
  3.                         CharSet = CharSet.Unicode, ExactSpelling = true,
  4.                        CallingConvention = CallingConvention.StdCall)]
  5.        public static extern int Bim_FIStoFMP5(
  6.                Bim_Mode*        bim_mode,    
  7.                out FisCore      i_a_axis,      
  8.                out FisQuality   i_qu,          
  9.                FisMinutiaNo*    i_mno,          
  10.                char[]           i_zdata,        
  11.                Bim_ZoneFormat   i_format,        
  12.                char[]           i_mpart,
  13.                char*            o_fmp5,        
  14.                int*             o_fmp5_len,    
  15.                Bim_DataError*   bim_data_error  
  16.            );
  17.  
  18.  


La declaracion de las variables
Código: Text
  1.          char texto = '\0';
  2.  
  3.                     Bim_Mode bim_mode2;
  4.                     bim_mode2.acm_db_tpye = AcmDbType.ACM_DB_TYPE_RDB_L;
  5.                     bim_mode2.bim_limit = Bim_Limit.eBimLimitYes;
  6.                     bim_mode2.num_limit = 63;
  7.                     bim_mode2.key_list = &texto;
  8.                     bim_mode2.key_list_len = 0;
  9.                     bim_mode2.bim_clear = Bim_Clear.eBimClearBCD_AxisYes;
  10.                     bim_mode2.bim_check = Bim_Check.eBimCheckNo;
  11.  
  12.                     FisCore o_core;
  13.                     FisQuality o_qu;
  14.                     FisMinutiaNo o_mno;
  15.                     char[] o_zdata = new char[256];     /* fix size */
  16.                     char[] o_mpart = new char[16*256];  /* fix size */
  17.  
  18.                     Bim_ZoneFormat i_format = new Bim_ZoneFormat();
  19.                     i_format = Bim_ZoneFormat.eBimZoneFormat_32x32_2bit;
  20.                     char o_fmp52;
  21.                     int o_fmp5_len2;
  22.                     Bim_DataError bim_data_error2 = new Bim_DataError();
  23.  
  24.  


La llamada a la funcion:
Código: Text
  1.  
  2.                     int h = Bim_FIStoFMP5(&bim_mode2, out o_core, out o_qu, &o_mno, o_zdata, i_format, o_mpart, &o_fmp52, &o_fmp5_len2, &bim_data_error2);
  3.  
  4.  

El resto son los tipos o sea STRUCT y ENUM que estan igual como los colocaste Tu en el codigo que pusiste. Aunque habian cosas que faltaban de las que no me habia percatado.

228
C# / Re: Cansado De Dllimport
« en: Martes 24 de Abril de 2007, 21:19 »
Al final logré que funcionara, pero si no hubiera sido por Ti, creo que no lo habría logrado.

Muchas gracias JuanK por toda tu ayuda.  :smartass:

229
C# / Al Depurar Se Cae El Programa...
« en: Martes 24 de Abril de 2007, 21:11 »
Hola Amigos y sobretodo a JuanK que si no fuera por toda su ayuda, no habria logrado en todo lo que voy.

Hice un programa en C# que toma funciones de una DLL, y las debe ejecutar.

Al fin, son 3 DLL que llama pero 2 que son compatibles o sea, las variables que manejan, se comunican.

Pero al compilar y al llamar a una determinada funcion que retorna un tipo long simplemente se cae y se cierra.

Una vez generado (compilado), con el depurador no alcanzo a ver que está pasando ni aunque coloque un punto de interrupción, simplemente se cae antes.

Ahora mi consulta, como puedo saber lo que está sucediendo entre la DLL y el programa en C#???..

Muchas gracias.

230
C# / Re: Menustrip C#
« en: Martes 24 de Abril de 2007, 18:18 »
Hazlo en Diseño, no por codigo.

Verás que al moverte por el menú irán apareciendo espacios vacios que corresponden al lugar en donde quieres insertar un nuevo elemento.

Luego solo debes asignarle un nombre.

La otra opcion es que en el modo grafico, agregues un nuevo componente con el boton derecho, este te da varias alternativas.

231
C# / Re: Que Tal Soy Nueva En La En C++
« en: Martes 24 de Abril de 2007, 18:15 »
Esta sección del foro está orientada a C# no C++.

232
C# / Re: Cansado De Dllimport
« en: Lunes 23 de Abril de 2007, 16:10 »
Imagen es una imágen obtenida de un dispositivo.

Claro que ese "Imagen" es una imagen en RAW, por lo que en C# se trabaja como un byte[78000].

Voy a hacerle un cast o alguna transformación para poder obtenerlo en Char. y asi probare tu codigo.

El mio compilaba, pero al ejecutar en enviaba valores errados o me indicaba:

"La firma no es compatible con interoperabilidad en el parametro 8"

//////////////////////////////////////////////////

Nuevo Error:

"No se puede calcular la referencia de 'parameter #8': No se admite el calculo para matrices anidadas.

//////////////////////////////////////////////////

Y si cambio el char[][] por char[] me envia el siguiente error:

"Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada."

Ya tengo convertido el byte[] a char[]

///////////////////////////////////////////////////

No se con cual mensaje estoy mas cerca de la solucion.

Y curiosamente, hay una funcion que muestra la version, que debiera mostrar un char, pero al colocarla como string funciona a la perfección.

233
C# / Re: Cansado De Dllimport
« en: Viernes 20 de Abril de 2007, 21:07 »
Me dice que debe tener un valor dentro de los corchetes.

De las siguiente forma no me reclama

Código: Text
  1. byte*[2000]
  2.  

Viste mi llamada a funcion?, como crees que estaba, me compila bien, pero quiza pueda haber un error de ejecución.

Muchas gracias.

234
C# / Re: Cansado De Dllimport
« en: Viernes 20 de Abril de 2007, 18:57 »
Y si eso es equivalente:

Código: Text
  1. char*** a char**[]
  2.  

Como hago para poder hacer una referencia a una cadena byte[]

Y

Que piensas del resto del codigo y como ves la llamada a la función?.

Y en el fixed debe ser byte, porq lo que ingresa es un arreglo de bytes. Si no no me permite asignar el byte[0].

235
C# / Re: Cansado De Dllimport
« en: Viernes 20 de Abril de 2007, 16:41 »
Hola JuanK, ya le agregue las cosas que me decias, pero la llamada a la funcion me indica "La firma no es compatible con interoperabilidad en el parametro 8" y no evalua nada mas.

La funcion que estoy utilizando es la siguiente:

Código: Text
  1. Bim_FIStoFMP5(bim_mode2, &i_a_axis2, &i_qu2, &i_mno2, i_zdata2, i_format, i_impart2, o_fmp52, o_fmp5_len2, bim_data_error2);
  2.  

Y las declaraciones de variables son, ya que esas son las declaraciones y valores que deben llevar por defecto para que se incialize:

Código: Text
  1.       unsafe
  2.                 {
  3.                     char texto = '\0';
  4.                    
  5.                     Bim_Mode bim_mode2;
  6.                     bim_mode2.acm_db_tpye = AcmDbType.ACM_DB_TYPE_RDB_L;
  7.                     bim_mode2.bim_limit = Bim_Limit.eBimLimitYes;
  8.                     bim_mode2.num_limit = 63;
  9.                     bim_mode2.key_list = &texto;
  10.                     bim_mode2.key_list_len = 0;
  11.                     bim_mode2.bim_clear = Bim_Clear.eBimClearBCD_AxisYes;
  12.                     bim_mode2.bim_check = Bim_Check.eBimCheckNo;
  13.                    
  14.                     try{
  15.                         void* i_a_axis2, i_qu2, i_mno2;
  16.                         byte*[] i_impart2;
  17.                         Bim_ZoneFormat i_format = new Bim_ZoneFormat();
  18.                         i_format = Bim_ZoneFormat.eBimZoneFormat_32x32_2bit;
  19.                         char**[] o_fmp52;
  20.                         int*[] o_fmp5_len2;
  21.                         i_impart2 = new byte*[1600];
  22.                         o_fmp5_len2 = new int*[10];
  23.                         o_fmp52 = new char**[1600];
  24.                         Bim_DataError bim_data_error2 = new Bim_DataError();
  25.  
  26.                         fixed (byte* i_zdata2 = &imagen[0])
  27.                         {
  28.                             Bim_FIStoFMP5(bim_mode2, &i_a_axis2, &i_qu2, &i_mno2, i_zdata2, i_format, i_impart2, o_fmp52, o_fmp5_len2, bim_data_error2);
  29.                         }
  30.                     }
  31.                     catch (Exception e)
  32.                     {
  33.                         MessageBox.Show("Error = " + e, "Error de parametro");
  34.                     }
  35.  
  36.                 }
  37.  
  38.  

Debi cambiar variables char por byte, ya que asi me es posible trabajar con los unsigned char y la llamada a DllImport me quedó de la siguiente manera, tambien le cambie el tipo bool por int, ya que me retorna un valor entero o -1.

Código: Text
  1.         [DllImport("Bimcot.dll", EntryPoint = "Bim_FIStoFMP5", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
  2.         public static extern int Bim_FIStoFMP5(
  3.                 Bim_Mode bim_mode,
  4.                 void* i_a_axis,
  5.                 void* i_qu,
  6.                 void* i_mno,
  7.                 byte* i_zdata,
  8.                 Bim_ZoneFormat i_format,
  9.                 byte*[] i_mpart,
  10.                 char**[] o_fmp5,
  11.                 int*[] o_fmp5_len,
  12.                 Bim_DataError bim_data_error
  13.             );
  14.  

También debi agregar un enum, o sea ingresar esos datos:

Código: Text
  1. public enum AcmDbType : long
  2.           {
  3.             ACM_DB_TYPE_RDB_T = 0x01,
  4.             ACM_DB_TYPE_RDB_L = 0x02,
  5.             ACM_DB_TYPE_LDB = 0x04,
  6.             ACM_DB_TYPE_EXTRA = 0x08,
  7.             ACM_DB_TYPE_SDBL = 0x10,
  8.             ACM_DB_TYPE_MAX = 5,
  9.           }
  10.  

Muchas gracias por las molestias.

Atte.

236
C# / Re: Cansado De Dllimport
« en: Viernes 20 de Abril de 2007, 04:59 »
Muchisimas gracias, ahora vengo recien llegando, asi que mañana te cuento, mucho trabajo.

Te pasaste, insisto, muchisimas gracias.

237
C# / Re: Cansado De Dllimport
« en: Jueves 19 de Abril de 2007, 15:44 »
Ok... esto me tiene afligido.

238
C# / Re: Crear Instancia De Una Clase Y Verla Desde Varios
« en: Miércoles 18 de Abril de 2007, 23:57 »
JuanK en otra discusion explico eso mismo, haciendo llamadas a funciones.

Discusión

239
C# / Re: Crear Instancia De Una Clase Y Verla Desde Varios
« en: Miércoles 18 de Abril de 2007, 23:28 »
Explicate a que le llamas instancia.

240
C# / Re: Imprimir Desde C#
« en: Miércoles 18 de Abril de 2007, 18:00 »
Puedes imprimir a través del servicio de Windows:

Código: Text
  1. using System.Drawing;
  2. using System.Drawing.Printing;
  3.  

Código: Text
  1. public static PrintDocument Imprimir = new PrintDocument();
  2.  

Código: Text
  1.       private static void Imprimir_PrintPage(Object sender, PrintPageEventArgs e)
  2.         {
  3.             Font fuente_de_texto = new Font("Courier New", 12);
  4.             e.Graphics.DrawString(texto_a_imprimir, fuente_de_texto, Brushes.Black, 0, 0);
  5.         }
  6.  

Debes pasarle como variable imp el texto en modo STRING para que lo imprima. Si necesitas un salto de linea agrega al texto de la siguiente manera:

Código: Text
  1. imp = imp + "\n";
  2.  

Código: Text
  1.         public static void imprime(string imp)
  2.         {
  3.             try
  4.             {
  5.                 texto_a_imprimir = imp;
  6.                 Imprimir.PrintPage += new PrintPageEventHandler(Imprimir_PrintPage);
  7.                 Imprimir.Print();
  8.             }
  9.             catch (Exception e)
  10.             {
  11.                 MessageBox.Show("Error." + e, "Error");
  12.             }
  13.         }
  14.  

Debes obtener el texto de alguna parte, junta los datos que obtienes en el form, en un solo STRING.

241
C# / Re: Cansado De Dllimport
« en: Martes 17 de Abril de 2007, 16:04 »
Ya te envie la DLL, ahora espero que te llegue de manera correcta, ya que no la envie como ZIP ni como RAR, avisame, gracias

242
C# / Re: Cansado De Dllimport
« en: Lunes 16 de Abril de 2007, 21:46 »
Muchisimas gracias JuanK, sabes, se me olvido un detalle en el codigo, y es que los 7 primeros parámetros son de entrada (in) y los 3 ultimos de salida (out).

Y muchas gracias nuevamente

 :D

243
C# / Re: Cansado De Dllimport
« en: Lunes 16 de Abril de 2007, 21:29 »
Nadie me puede responder?, se que he molestado mucho con este tema, pero no he podido solucionarlo.

 :comp:

244
C# / Cansado De Dllimport
« en: Jueves 12 de Abril de 2007, 17:41 »
Necesito su ayuda, he intendado 1000 formas de poder usar esto, y no hay caso, no comprendo bien aun esa funcion y esta el la funcion que debo llamar de una dll, por favor si alguien me puede decir como hacerlo:

Código: Text
  1.  
  2.  
  3. FUNCION_TYPE int Convertir(
  4.     Mode_pr      *mode,      
  5.     void           *eje,      
  6.     void           *cantidad,          
  7.     void           *inicio,          
  8.     unsigned char  *info,        
  9.     ZoneFormat_pr formato,        
  10.     unsigned char  *partes,        
  11.     unsigned char  **retorno,      
  12.     int            *largo,    
  13.     DataError_pr  *error  
  14. );
  15.  
  16.  
  17.  

Este codigo pertenece al header (*.h) de la DLL y es lo unico que deseo ejecutar.

Prefiero hacer todo el codigo nuevamente, lo que son los struct y enum los tengo bien declarados, pero mis dudas son los punteros * los void y parametros de regreso los que son los unsigned char.

Me pueden de decir como declarar las variables en C#, como usar el dllimport para ese codigo y como llamar la funcion?.

Por favor, disculpen lo cara dura, pero no encuentro la solucion.

Muchisimas gracias.

245
C# / Creando Dll Compatible Con C#
« en: Miércoles 11 de Abril de 2007, 17:40 »
Holas y nuevamente gracias.

Tengo unas DLL para utilizar, estoy probando varios metodos, y uno que me resulto bastante curioso, fue el de crear una copia de una dll, para que sea compatible con COM.

El metodo es el siguiente utilizando tlbimp.exe en cmd:

Código: Text
  1.  tlbimp dllantigua.dll /out: nombre_nueva_dll.dll
  2.  

Me pareció un sueño, lo hice con la dll que debo trabajar y la agregue de una manera muy fácil.

Agregandola en referencias, cosa que no me produjo problemas y luego.

Código: Text
  1.  using nombre_nueva_dll;
  2.  

Despues solo declare e inicialize las variables usando las propiedades que me muestra el Examinador de objetos.

Pero me surgio un problema.

Debia crear funciones que enlazaran esas DLL con otras, ya que solo eran de vinculacion y no pude transformar de la misma forma las DLL importantes.

Agrege todas esas lineas a mi codigo y listo, compiló perfectamente.

Ahora viene el problema.

Al llegar a la linea donde se inicializa la funcion de la DLL, me envia un error:

Código: Text
  1. Error al recuperar un generador de clases COM para el componente con CLSID {D5725239-8C87-4E66-BB33-6640C2D00DB8} debido al siguiente error: 80040154.
  2.  

Y eso nose como solucionarlo. La opcion que estoy barajando es crear la DLL original nuvamente, ya que poseo los *.h y los *.lib, pero nose como hacerlo.

El método para agregar una dll externa me ha producido 1000 y un problemas.

Espero su ayuda, muchas gracias.

246
C# / Re: Dll De C++ En C#
« en: Martes 10 de Abril de 2007, 20:24 »
Al realizar ese cambio me envia un error:

Intento de leer o escribir en la memoria protegida. A menudo esto indica que hay otra memoria dañada.

247
C# / Re: Dll De C++ En C#
« en: Martes 10 de Abril de 2007, 18:09 »
Es asi:

Código: Text
  1. [DllImport("dll.dll")]
  2. public unsafe static extern int funcion_externa(modo tipo_modo, Byte[] dato1, formato tipo_formato, void valor,Byte[] objeto,out Byte*[] dato_de_vuelta,out int* largo_dato,out Error* tipo_error);
  3.  

Declaro cada uno de los parametros y esta es mi llamada a la funcion dentro de unsafe:

Código: Text
  1. funcion_externa(modo tipo_modo, dato1, tipo_formato, objeto,out dato_de_vuelta,out largo_dato, out tipo_error);
  2.  

Estoy omitiendo el VOID en los 2 ejemplos, arriba solo lo puse como debería ir en el codigo.

Por lo que he averiguado los miembros VOID no se declaran, asi que opté por omitirlos, pero aun no me funciona la llamada, porque cuando llamo a la funcion me envia otro error en el ultimo parametro:

"No se puede calcular la referencia de 'parameter #7: Los punteros no pueden hacer referencia a estructuras con referencias calculadas. Utilice ByRef en su lugar."

248
C# / Re: Dll De C++ En C#
« en: Lunes 9 de Abril de 2007, 22:58 »
Quise postear en esta misma discusión, ya que tengo un problema con los miembros VOID al exportar una DLL, ya que el compilador me dice :

"El parámetro void no es válido".

Entonces que hago para declarar esas variables?.

249
C# / Insertar En Sql Desde Un Datagrid
« en: Domingo 1 de Abril de 2007, 03:23 »
Buenas y nuevamente muchas gracias por su ayuda, pero me surgió otro problema.

Tomo datos de una base de datos, los guardo en un XML y luego los represento en un DataGrid, ahora lo que deseo realizar es colocar esos datos del DataGrid en otra base de datos que no posee la misma estructura. Como puedo hacerlo?.

Muchas gracias por toda su ayuda.

250
C# / Re: Importar Y Exportar
« en: Jueves 29 de Marzo de 2007, 04:24 »
No se lo que es un DTS, y me gustaria pasarla a CVS o TXT, pero mi conflicto son los datos binarios. Son Imágenes *.RAW, que las puedo manejar como cadena de bytes.

Páginas: 1 ... 8 9 [10] 11 12 13