2015-04-03 53 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网址。