Buenas, estoy haciendo una dll con visual c++ 6. El problema es que tengo una funcion con un parametro de entrada del tipo BSTR. Lo que quiero es tratar la informacion que tiene este parametro. Esta informacion es del tipo: sddff|123|ddd, lo que quiero es recuperar lo que hay entre los |. Lo que esta entre las pipes, seran codigos de producto que iran canviando dependiendo de lo que le llega como parametro. Algo no hago bien porque cuando lo estoy probando la dll con visual o me peta o solo me retorna la primera letra. Os muestr el codigo que estoy utilizando:
BSTR __declspec(dllexport) CALLBACK obtener_datos (BSTR idcode)
{
_bstr_t bstrFinal(idcode); //BSTR-->_bstr_t
char *buff = bstrFinal; ///BSTR-->to C String<-->TCHAR
string str(buff); //C String<->TCHAR-->string //bascic string
string texto;
_bstr_t textfin;
string::size_type inicio = str.find_first_of("|"); //obtengo la posiciÛn del primer car·cter de control
string::size_type final = str.find_last_of("|"); //obteno la ˙ltima posiciÛn del car·cter de control
texto = str.substr(inicio,final); //sustring, del texto que me interesa.
_bstr_t bstrt(texto.c_str()); // asigno el texto calculado a la variable del tipo _bstr
return bstrt;
}
Muchas gracias.