gpt4 book ai didi

com - 将 BSTR 从 OLE 返回到 Inno Setup

转载 作者:行者123 更新时间:2023-12-01 23:27:46 26 4
gpt4 key购买 nike

在我使用 Inno Setup 5.x 创建的设置中,我使用代码来执行 HTTP 请求。

这是由 WinHttpRequest COM 完成的.

虽然将字符串参数传递给函数相当容易,但我在接收它们时遇到了问题。

例如函数GetResponseHeader

HRESULT GetResponseHeader(
[in] BSTR Header,
[out, retval] BSTR *Value
);

接受一个 IN 参数和一个 OUT 参数。

将空字符串传递给 Value 会导致抛出 Invalid Variant Operation

Pascal 端 [out, retval] BSTR *Value 的正确类型是什么?如何将其转换为字符串?我应该手动释放它吗?

最佳答案

其实就是把那种方法签名转成函数。实际上,该方法具有以下签名:

function GetResponseHeader(Header: string): string;

所以你可以这样做:

var
WinHttpReq: Variant;
ContentType: string;
begin
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET', 'https://www.example.com/', False);
WinHttpReq.Send();
ContentType := WinHttpReq.GetResponseHeader('Content-Type');
Log(ContentType);
end;

关于com - 将 BSTR 从 OLE 返回到 Inno Setup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com