Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem konvert na BYTE* v C++

Ahoj.
Vie mi niekto poradit ako skonvertovat retazec typy BSTR na pole BYTE*,ktore nasledne kodujem do Base64
Prikladam aj cast a procky ktora prebehne bez problemov ale pritom sa pole vobec nevytvorii!! cize HRESULT <> S_OK

_bstr_t r1(user);_bstr_t r2(passw);
r1+=r2;
BYTE *p=new BYTE(sizeof(BYTE));
HRESULT hr;
//en-gb 0x0809 2057

hr=VarUI1FromStr(r1,0x0809,LOCALE_NOUSEROVERRIDE,p ); //konvert na BYTE*
if (hr=S_OK )
MessageBox(NULL,TEXT("Konveria bola uspesna"),TEXT("..."),0+MB_ICONINFORMATION );

Diikes

Předmět Autor Datum
:-? tym BYTE *p=new BYTE(sizeof(BYTE)); chcel autor povedat co? Radsej ostan u VisualBasicu kym sa n…
MM.. 21.08.2007 17:00
MM..
... inac ten VarUI1FromStr konvertuje snad po jednom znaku alebo ako to je, takze ked uz tak by malo… poslední
MM.. 21.08.2007 17:23
MM..

:-? tym
BYTE *p=new BYTE(sizeof(BYTE));
chcel autor povedat co? Radsej ostan u VisualBasicu kym sa nenaucis programovat a neujasnis pojmy ako alokacia pamate, pole, pointer apod. Nechaj z toho len
BYTE *p;
zbytok az budes vediet kolko chces alokovat (napr. pomocou r1.length()) a ci vobec potrebujes alokovat nove pole na to (co s tym chces potom robit?)
Odkial si nabral ze na tu konverziu mozes pouzit VarUI1FromStr ?
trieda _bstr_t ma zadefinovany operator const char*( ), tak ho skus pouzit p = (const char*)r1;

P.S. asi to bude lepsie pretypovat na TCHAR pointer kvoli tomu ze to moze byt aj unicode a potom robit s TCHAR podla toho co potrebujes. Napr.

TCHAR szFinal[255];    // ale dlzku si zisti a alokuj radsej dynamicky, nie staticky 255, toto je len priklad
_stprintf(szFinal, _T("%s"), (LPCTSTR)r1);

... inac ten VarUI1FromStr konvertuje snad po jednom znaku alebo ako to je, takze ked uz tak by malo stacit
BYTE skonvertovany_znak;
VarUI1FromStr(r1, neco, LOCALE_NOUSEROVERRIDE, &skonvertovany_znak);
a skonvertuje to prvy znak.
Ak to vyhadzuje chybu tak mas problem pravdepodobne v druhom parametri. Mohol by si si debuggerom pozriet presne aku hodnotu to vrati, alebo v kode porovnat so symbolmi DISP_E_BADVARTYPE, DISP_E_OVERFLOW, DISP_E_TYPEMISMATCH, E_INVALIDARG, E_OUTOFMEMORY aby si vedel aspon priblizne v com je problem.

Zpět do poradny Odpovědět na původní otázku Nahoru