Primero de todo agradeceros vuestra ayuda. Estoy haciendo una dll con visual c++ 6. Hace mil años que no programo, así que pido diculpas por mis errrores en el codigo. Tengo una funcion que tiene un parametro de entrada del tipo BSTR. La informacion que recibire sera algo asi: ggsss$123$, donde 123 será un codigo del producto, así que sera dinamico. Estoy intentando recuperar la información que hay entre los $ con el codigo que les mostare. El problema es que cuando lo pruebo con visual o me peta o no me devuelve correctamente el texto que esta delimitado. El codigo es:
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.