Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Enviar BSTR como parámetro de funcion

Buenos dias,

Estoy utilizando un Control Active X en C++ Builder 6 y estoy tratando de usar una función que recibe como parámetro un puntero BSTR*, pero al ejecutar la función me marca error de memoria.

En concreto la función que deseo utilizar es la siguiente:

Código Delphi [-]
  TOLEBOOL        __fastcall GetUserTmpExStr(long dwMachineNumber/*[in]*/, 
                                             BSTR dwEnrollNumber/*[in]*/, long dwFingerIndex/*[in]*/, 
                                             long* Flag/*[out]*/, BSTR* TmpData/*[out]*/, 
                                             long* TmpLength/*[out]*/);

Y la estoy empleando de esta manera:

Código Delphi [-]
void __fastcall TForm1::CZKEM1EnrollFingerEx(TObject *Sender,
      BSTR EnrollNumber, long FingerIndex, long ActionResult,
      long TemplateLength)
{
  if (ActionResult==0)
  {
     long TLength;
     long flag;
     BSTR Tempdata;

     if (CZKEM1->GetUserTmpExStr(CZKEM1->MachineNumber,EnrollNumber,FingerIndex,&flag,&Tempdata,&TLength))
     {
     }
  }
}

Todos los parametros de entrada los recibe de la propia función y están bien inicializados, el problema es con los 3 ultimos parámetros de salida.

Agradezco su ayuda.
Responder Con Cita
  #2  
Antiguo 12-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mordaz.

Sería bueno poder saber el error que estas recibiendo, pero de todos modos y por si te sirve de guía, te agrego un ejemplo muy básico que usa parámetros BSTR y LONG:
Código:
void demo(BSTR in, BSTR*out, LONG* flag){
  *flag = 123;
  wsprintf(String(*out).c_str(), "%s %s %d", String(in).c_str(),
    "modificado", *flag);
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BSTR BSTRIn  = L"Mensaje de prueba";
  BSTR BSTROut = NULL;
  LONG LONGOut = 0;

  demo(BSTRIn, &BSTROut, &LONGOut);
  MessageBox(0, String(BSTROut).c_str(), "", MB_OK);
}
A fin de simplificar la presentación, ambos parámetros regresan como un único resultado en el segundo parámetro.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-08-2014 a las 22:31:00. Razón: sintáxis
Responder Con Cita
  #3  
Antiguo 16-08-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Unhappy

Como siempre muchas gracias Ecfisa, al parecer todo el problema fue por la "inicialización" de la variable

Se arreglo modificando esta linea.

Código Delphi [-]
BSTR Tempdata=NULL;

Gracias por todo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
se puede enviar un procedimiento como parametro a otro?? jasmad Lazarus, FreePascal, Kylix, etc. 13 28-03-2014 09:57:38
Como enviar parametro fecha a rave Krmn Impresión 0 12-10-2011 00:45:10
como enviar nombre de tabla como parametro ? sabueso1010 SQL 15 27-09-2011 17:19:48
Enviar a VK_F1 como parametro mRoman OOP 4 01-05-2010 17:44:56
Pasar como parametro el where en una funcion cso2000 MS SQL Server 2 15-02-2005 02:49:47


La franja horaria es GMT +2. Ahora son las 21:06:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi