gpt4 book ai didi

delphi - 如何声明一个 C 字符串数组? (WinAPI 函数需要)

转载 作者:行者123 更新时间:2023-12-03 15:55:11 25 4
gpt4 key购买 nike

我想使用 HttpOpenRequest 通过 GET 从互联网下载文件。我不知道如何声明 AcceptType 参数。 MS 文档说它是一个字符串数组。所以我这样声明:

CONST
AcceptType: packed array[0..1] of LPWSTR = (PChar('*/*'), nil);

我做错了什么吗? LPWSTR 是一个指向字符串的指针,但是,文档说我需要一个字符串。如何声明与 C++ 兼容的字符串矩阵?

<小时/>
procedure THTTPGetThread.Execute;
CONST
AcceptType: packed array[0..1] of LPWSTR = (PChar('*/*'), nil); // Originally was: AcceptType:= PWideChar('Accept: ' + FTAcceptTypes);
VAR
hConnect: hInternet;
FileName: String;
Data: Array[0..1024] of Char;
TempStr: PAnsiChar;
RequestMethod: PChar;
InternetFlag: DWord;
begin
...
hRequest:= HttpOpenRequest(hConnect, RequestMethod, PChar(FileName), PChar('HTTP/1.0'), PChar(FTReferer), @AcceptType, InternetFlag, 0);
...
end;
<小时/>

我使用Delphi XE。MS 文档位于:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384233(v=vs.85).aspx我的函数是多线程的,因此在下载时不会阻止程序。单线程函数对我来说不起作用。

最佳答案

你就快到了。您只需将指针传递给数组的第一个元素:

@AcceptType[0]

事实上,正如 @Serg 指出的那样,这相当于您现有的代码。因此,正如您在下面评论的那样,您面临的问题似乎与此参数的传递无关。

<小时/>

顺便说一句,我想我会使用 PWideChar 而不是 LPWSTR,但这不是这里的问题,因为它们是等效的。

关于delphi - 如何声明一个 C 字符串数组? (WinAPI 函数需要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725182/

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