2015-04-03 84 views
0

我很難搞清楚如何將URL中的圖像加載到TImage控件中。C++ Builder TImage從URL加載

從廣義上講,這是我需要做的

TMemoryStream *str = new TMemoryStream; 
    http->Get("http://myurl.mydomain.com/myimage.jpg", str); 

這個問題似乎是海峽沒有分配給它的空間。我得到一個「無效的IO句柄錯誤」。

我無法找到圖像的大小。

我該怎麼做?我試圖通過創建一個虛擬文件並將該文件加載到TMemoryStream中來爲TMemoryStream分配10MB的空間,但也會拋出「Invalid IO Handler」錯誤。

在RAD Studio XE7上使用C++ Builder開發iOS和Android應用程序。

非常感謝

艾耶

回答

0

的問題是無法與已顯示的代碼。 TMemoryStream隨着數據寫入數據而動態增長,並且TIdHTTP::Get()將寫入服務器實際發送的任何數據。您所顯示的代碼語法很好。

如果您收到一個「IOHandler值無效」從Get()錯誤,這意味着被請求的HTTPS URLTIdSSLIOHandlerSocketBase來源的組件(如TIdSSLIOHandlerSocketOpenSSL)未分配給TIdHTTP::IOHandler屬性來處理SSL/TLS加密。您的代碼正在請求HTTP url,因此服務器可能會發送重定向響應,以告知TIdHTTP請求代替URL(請檢查TIdHTTP::OnRedirect事件以進行驗證)。您需要分配SSL IOHandler才能處理HTTPS網址。