【问题标题】:C++ Builder TImage Load From URLC++ Builder TImage 从 URL 加载
【发布时间】:2015-04-03 00:04:06
【问题描述】:

我无法弄清楚如何将图像从 URL 加载到 TImage 控件中。

总的来说,这就是我需要做的

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

问题似乎是 str 没有分配空间。我得到一个“无效的 IO 句柄错误”。

我无法事先确定图像的大小。

请问我该怎么做?我试图通过创建一个虚拟文件并将该文件加载到 TMemoryStream 中来为 TMemoryStream 分配 10MB 的空间,但这也会引发“Invalid IO Handler”错误。

在 RAD Studio XE7 上使用 C++ Builder 开发 iOS 和 Android 应用程序。

非常感谢

【问题讨论】:

    标签: android c++ ios c++builder timage


    【解决方案1】:

    问题不在于您显示的代码。 TMemoryStream 随着数据写入而动态增长,TIdHTTP::Get() 将写入服务器实际发送的任何数据。您显示的代码语法很好。

    如果您收到来自Get() 的“IOHandler 值无效”错误,这意味着正在请求一个 HTTPS url,但是一个来自TIdSSLIOHandlerSocketBase 的组件(例如TIdSSLIOHandlerSocketOpenSSL ) 未分配给 TIdHTTP::IOHandler 属性以处理 SSL/TLS 加密。您的代码正在请求 HTTP url,因此服务器可能会发送重定向响应以告诉 TIdHTTP 改为请求 HTTPS url(检查 TIdHTTP::OnRedirect 事件以核实)。您需要分配一个 SSL IOHandler 才能处理 HTTPS 网址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多