Piszę program do obsługi poczty email. Korzystam z C++ Builder 6 i komponentów TIDMessage, TIDPop3, TIDSmtp, CppWebBrowser.
Pocztę pobieram do Memo i z memo wyświetlana jest w CppWebBrowser. Robiłem to jak w przykładzie Cyfrowego Barona:
KOD cpp: UKRYJ
TMemoryStream *stm = new TMemoryStream();
WiadomoscMemo->Lines->SaveToStream(stm);
IPersistStreamInit *psi;
stm->Seek(0, 0);
TStreamAdapter *sa = new TStreamAdapter(stm, soReference);
if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
psi->Load(*sa);
delete stm;
WiadomoscMemo->Lines->SaveToStream(stm);
IPersistStreamInit *psi;
stm->Seek(0, 0);
TStreamAdapter *sa = new TStreamAdapter(stm, soReference);
if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
psi->Load(*sa);
delete stm;
i podczas tworzenia formularza (onCreate):
KOD cpp: UKRYJ
CppWebBrowser1->Navigate(WideString( "about:blank" ));
Wszystko dobrze działa, ale przy wyłączaniu programu pokazuje się błąd:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 0040235B in module 'Project1.exe'. Read of adress 00000000'. Process stopped. Use Srep or Run to continue. |
Builder podświetla linijkę, która powoduje błąd:
KOD cpp: UKRYJ
if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
Co w tym wypadku może być źle?
Czy macie może jakiś sposób na zmianę kodowania na UTF-8 w CppWebBrowserze? Czasami maile mają dobre kodowanie, a czasami złe.
//EDIT Zauważyłem że tego błędu nie ma, jak wyłączam program przy braku wczytanego maila do cppwebbrowser (kiedy jest pusta)