检测网络,循环程序怎么总是搞不定!??这下死了~~!(100分)

  • 主题发起人 主题发起人 上帝521
  • 开始时间 开始时间

上帝521

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老大:
问题1、为何我只要在DELPHI中加ELSE就出错?
如何能在程序中快洁的检测现在计算机是否上网(不能出现提示框的那种)
如何让程序在判断网络状态为FALSE的时候等待10分钟?
还有如何让程序中的某一段运行50次?
我刚刚学DELPHI,请各位不要见笑,谢谢你们的真诚帮助。
 
1、你需要将if里面的那句话或者end后面的那个分号去掉。
 
3、如何让程序在判断网络状态为FALSE的时候等待10分钟?
使用Timer控件或者自己循环判断时间来实现,推荐使用Timer控件。
4、For i:=0 to 49 do
你的程序
如:
For i:=0 to 49 do
Button1Click(Sender);
 
哦谢谢了!

给您50分,我回去试试先!~~~~
再次谢谢
 
呵呵
好象只能给100分哦,那就给你了,
var
ConnectState: DWORD;
StateSize: DWORD;
begin
ConnectState:= 0;
StateSize:= SizeOf(ConnectState);
result:= false;
if InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ConnectState, StateSize) then
if (ConnectState and INTERNET_STATE_DISCONNECTED) <> 2 then result:= true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckOffline then
edit1.text:= 'Connect To ISP'
else
edit1.text:= 'Disconnect To ISP';
end;
这里的ELSE总是有问题耶!
我怀疑这个好不好用?
 
你的写法没有问题。正确的。
上面的是CheckOffline 部分的代码吧。
不过不知道InternetQueryOption是什么,我没见过这个。
 
Win32 Internet(WinInet) 函数 InternetQueryOption 是用来检测网络状态的;
这个函数的功能是查询指定 Internet 句柄的状态、选项。
其 API 声明如下:

BOOL InternetQueryOption(
IN HINTERNET hInternet,
IN DWORD dwOption,
OUT LPVOID lpBuffer,
IN OUT LPDWORD lpdwBufferLength
);

参数的意义是:

hInternet:查询对象的 Internet 句柄(全局查询时为 nil),
dwOption:查询的项目;
lpBuffer:返回的查询结果;
lpdwBufferLength:查询结果的字节长度(包括 IN 和 OUT);

查询成功返回 True,否则返回 False;

我们要查询当前计算机的 Internet 连接状态时可以使用查询项目 INTERNET_OPTION_CONNECTED_STATE,

得到的 ConnectState 返回值可能是以下值的一个或几个值之和:

INTERNET_STATE_CONNECTED :$00000001 连接状态;
INTERNET_STATE_DISCONNECTED :$00000002 非连接状态(和 INTERNET_STATE_CONNECTED 对应);
INTERNET_STATE_DISCONNECTED_BY_USER :$00000010 用户请求的非连接状态
INTERNET_STATE_IDLE :$00000100 连接状态,并且空闲
INTERNET_STATE_BUSY :$00000200 连接状态,正在响应连接请求
 
后退
顶部