[英]Show image in TImage dynamically (at run time) without opendialog in c++ builder xe8
[英]C++ Builder TImage Load From URL
在弄清楚如何將圖像從URL加載到TImage控件時遇到了麻煩。
概括地說,這就是我要做的
TMemoryStream *str = new TMemoryStream;
http->Get("http://myurl.mydomain.com/myimage.jpg", str);
問題似乎是str沒有分配空間。 而且我收到“無效的IO處理錯誤”。
我無法事先找到圖像的大小。
請問我該怎么做? 我試圖通過創建一個虛擬文件並將該文件加載到TMemoryStream來為TMemoryStream分配10MB的空間,但這也會引發“無效的IO處理程序”錯誤。
在RAD Studio XE7上使用C ++ Builder開發iOS和Android應用程序。
非常感謝
艾耶
問題不在於您顯示的代碼。 TMemoryStream
隨着數據的寫入而動態增長,並且TIdHTTP::Get()
將寫入服務器實際發送的任何數據。 您顯示的代碼語法很好。
如果從Get()
“ IOHandler值無效”錯誤,則表示正在請求HTTPS URL,但未將TIdSSLIOHandlerSocketBase
派生的組件(例如TIdSSLIOHandlerSocketOpenSSL
)分配給TIdHTTP::IOHandler
屬性以處理SSL。 / TLS加密。 您的代碼正在請求HTTP URL,因此服務器可能會發送重定向響應,以告知TIdHTTP
來請求HTTPS URL(請檢查TIdHTTP::OnRedirect
事件以進行驗證)。 您需要分配一個SSL IOHandler才能處理HTTPS URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.