Cómo capturar un dato de una estructura???
Publicado por M@verick (4 intervenciones) el 13/09/2007 19:03:40
Hola, estoy realizando un DLL que debe de obtener diferentes datos de un scanner usando el API del fabricante la cual está hecho en C plano, tengo un problema al intentar obtener un dato string (que contiene los nombres de los archivos de imagenes generadas por dicho scanner) de una estructura ligada, el código propuesto es el siguiente:
int CCON getImgName(void *p){
//Declaraciones locales
char tempo[255];
struct RDSScan *lRDSScanInd;
lRDSScanInd = (struct RDSScan *)p;
strcpy(tempo,lRDSScanInd->rdsi[0]->filename);
return (1);
}
void *p es un dato que el API retorna cuando se manda llamar este función por funciones callback de la propia API.
Esta sección de código está en el DLL y al compilar y construirla no marca errores, pero al usarla desde un aplicativo externo, ocurre un error de violación de memoria. El Punto es que lo que trae la variable "lRDSScanInd->rdsi[0]->filename" sea asignado a una variable en programa para que lo pueda manejar como yo desee, en C++ esto se resuelve como sigue:
char *Name=new char[255];
strcpy(Name, lRDSScanInd->rdsi[0]->filename);
Pero la sentencia "new" no es soportada en C plano y yo lo requiero en C plano, entonces requiero encontrar alguna declaración o manera en C plano para capturar el dato de "lRDSScanInd->rdsi[0]->filename" que es una estructura en donde la variable "filename" está declarado como char *filename, he realizado diferentes pruebas declarando:
char *tempo;
char* tempo;
char *tempo[255];
char **tempo;
char tempo[255][255];
y he obtenido el mismo error.
Sabe alguien qué puedo hacer?
Gracias...
By M@verick
int CCON getImgName(void *p){
//Declaraciones locales
char tempo[255];
struct RDSScan *lRDSScanInd;
lRDSScanInd = (struct RDSScan *)p;
strcpy(tempo,lRDSScanInd->rdsi[0]->filename);
return (1);
}
void *p es un dato que el API retorna cuando se manda llamar este función por funciones callback de la propia API.
Esta sección de código está en el DLL y al compilar y construirla no marca errores, pero al usarla desde un aplicativo externo, ocurre un error de violación de memoria. El Punto es que lo que trae la variable "lRDSScanInd->rdsi[0]->filename" sea asignado a una variable en programa para que lo pueda manejar como yo desee, en C++ esto se resuelve como sigue:
char *Name=new char[255];
strcpy(Name, lRDSScanInd->rdsi[0]->filename);
Pero la sentencia "new" no es soportada en C plano y yo lo requiero en C plano, entonces requiero encontrar alguna declaración o manera en C plano para capturar el dato de "lRDSScanInd->rdsi[0]->filename" que es una estructura en donde la variable "filename" está declarado como char *filename, he realizado diferentes pruebas declarando:
char *tempo;
char* tempo;
char *tempo[255];
char **tempo;
char tempo[255][255];
y he obtenido el mismo error.
Sabe alguien qué puedo hacer?
Gracias...
By M@verick
Valora esta pregunta


0