gpt4 book ai didi

delphi - 检索默认的互联网超时值?

转载 作者:行者123 更新时间:2023-12-01 19:41:54 25 4
gpt4 key购买 nike

我正在尝试检索 INTERNET_OPTION_SEND_TIMEOUTINTERNET_OPTION_SEND_TIMEOUTINTERNET_OPTION_RECEIVE_TIMEOUT 选项标志的默认值。据我所知,它们位于 WinInit 中。

以下代码无法编译,实际和形式 var 参数的类型必须相同,但是这里哪个参数不正确?

procedure TFrmWininetTimeOuts.FormShow(Sender: TObject);
var
hSession : HINTERNET;
dwTimeOut : DWORD;
begin
hSession := InternetOpen('usersession', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(hSession) then Exit;
try
InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT, @dwTimeOut, SizeOf(dwTimeOut));
finally
InternetCloseHandle(hSession);
end;
end;

代码完成表示它需要一个(指针,基数,指针,基数)。
我看到了调用 InternetQueryOption(nil,)(也无法编译)或使用中间 InternetOpenUrl 的代码示例,但我想我不需要它。

最佳答案

通过查看WinInet.pas中的声明可以看到,InternetQueryOption的最后一个参数是一个var参数:

function InternetQueryOption(hInet: HINTERNET; dwOption: DWORD;
lpBuffer: Pointer; var lpdwBufferLength: DWORD): BOOL; stdcall;

该函数接收缓冲区的长度,但也告诉您它向缓冲区写入了多少字节,因此您在该参数中传递的值需要是可修改的。常量 SizeOf(dwTimeOut) 不可修改。

将值存储在变量中,然后将该变量传递到该参数中。还要确保检查 API 函数的返回值。出错时不会抛出异常;它将返回False

var
BufferSize: DWord;

BufferSize := SizeOf(dwTimeOut);
Win32Check(InternetQueryOption(hSession, INTERNET_OPTION_RECEIVE_TIMEOUT,
@dwTimeOut, BufferSize));

关于delphi - 检索默认的互联网超时值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848428/

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