Salve a tutti, ho un BSTR* e vorrei convertirlo in un CString*.
Sapete come si fa? Qualcuno puo' darmi una mano?
Grazie e ciao
Sandro
Salve a tutti, ho un BSTR* e vorrei convertirlo in un CString*.
Sapete come si fa? Qualcuno puo' darmi una mano?
Grazie e ciao
Sandro
Se hai gli oggetti in questione allora basta
CString csStr = bStr;
Dato che hai dei puntatori, opera di conseguenza.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Ciao.Dato che hai dei puntatori, opera di conseguenza.
Provando a mettere:
mi da quest'errore: error C2440: 'initializing' : cannot convert from 'BSTR *' to 'CString *'codice:BSTR* ticketReturn; CString* resStr = ticketReturn;
Mettendo:
quando esegue resCStr = (CString)resStr->GetString(); mi da quest'errore (sul debug di Visual Studio):codice:BSTR* ticketReturn = (BSTR*)"No data available"; CString resCStr; if (ticketReturn != NULL) { CString* resStr = (CString*)ticketReturn; resCStr = (CString)resStr->GetString(); }
Unhandled exception at 0x03fa76f0 in Terminale Utente.exe: 0xC0000005: Access violation reading location 0x64206f4e.
E si pianta l'applicazione (e' un'applicazione per terminale mobile)
Facciamo un passo indietro ... tu hai solamente un puntatore a BSTR o hai effettivamente una stringa allocata di tipo BSTR?
A cosa ti serve il puntatore a CString ? Lo devi passare ad una API ? Ad una tua funzione ?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Dunque inizialmente sono partito con un semplice BSTR* non inizializzato per passarlo ad una funzione di un web service client generato tramite il wizard dell'add web reference (sempre di Visual Studio ovviamente).Originariamente inviato da oregon
Facciamo un passo indietro ... tu hai solamente un puntatore a BSTR o hai effettivamente una stringa allocata di tipo BSTR?
Mi sono pero' accorto che il metodo a cui passavo il BSTR* usciva subito perche' testa su questo BSTR* e se lo trova NULL esce immediatamente.
Allora ho provato ad inizializzarlo con:
L'effetto e' stato che il metodo della classe generata si pianta in un altro punto (che sara' magari oggetto di un altro post).codice:BSTR* ticketReturn = (BSTR*)"No data available";
Per poter gestire l'output della funzione (una semplice stringa di testo) volevo usare una CString con la quale ho dimestichezza e quindi devo mettere il contenuto di BSTR* in CString.
Spero di aver chiarito un po' la questione!
Ciao e grazie
Sandro
Ciao,
Basta fare un cast a LPCSTR:
codice:BSTR* ticketReturn = (BSTR*)"No data available"; CString resCStr; if (ticketReturn != NULL) { CString resStr = (LPCSTR)ticketReturn; AfxMessageBox(resStr); }
Funziona alla stragrande! Grazie mille!Originariamente inviato da Vincenzo1968
Ciao,
Basta fare un cast a LPCSTR:
codice:BSTR* ticketReturn = (BSTR*)"No data available"; CString resCStr; if (ticketReturn != NULL) { CString resStr = (LPCSTR)ticketReturn; AfxMessageBox(resStr); }