procedure TForm1.Url_Check;
var
paralist:Tstringlist ;
s1:TStringStream ;
t:string ;
begin
paralist := Tstringlist.Create ;
s1 := TStringStream.Create('');
PARALIST.ADD('shuaishuai='+shuaishuai) ; //shuaishuai 是一个全局变量
try
idhttp1.Post('http://www.cctv.com/check/Check.Asp', paralist, s1) ;
t := s1.DataString ;
finally
paralist.Free ;
s1.Free ;
end;
if t = '3' then
begin
form1.Label14.Caption := '版本过老,须要更新' ;
showmessage ('版本过老,须要更新,重新打开一次就OK了') ;
Application.Terminate ;
Winexec(pchar(RootFile+'updata.exe'),sw_normal) ; //调用外部升级程序,进行强制更新
end;
end ;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Url_Check ;
end;
主窗体是这样设计的,大意是,一个TIMER1,每一秒执行一次Url_Check 进行网络验证如何把这个功能写进线程去执行,因为有时网络比较慢时,程序会出现无响应的情况,
还有时会出现一个SOCKE错误框,意思就是网络连接有错谁能帮我写这个线程类,我对线程知识一无所知,还请朋友们帮忙。
var
paralist:Tstringlist ;
s1:TStringStream ;
t:string ;
begin
paralist := Tstringlist.Create ;
s1 := TStringStream.Create('');
PARALIST.ADD('shuaishuai='+shuaishuai) ; //shuaishuai 是一个全局变量
try
idhttp1.Post('http://www.cctv.com/check/Check.Asp', paralist, s1) ;
t := s1.DataString ;
finally
paralist.Free ;
s1.Free ;
end;
if t = '3' then
begin
form1.Label14.Caption := '版本过老,须要更新' ;
showmessage ('版本过老,须要更新,重新打开一次就OK了') ;
Application.Terminate ;
Winexec(pchar(RootFile+'updata.exe'),sw_normal) ; //调用外部升级程序,进行强制更新
end;
end ;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Url_Check ;
end;
主窗体是这样设计的,大意是,一个TIMER1,每一秒执行一次Url_Check 进行网络验证如何把这个功能写进线程去执行,因为有时网络比较慢时,程序会出现无响应的情况,
还有时会出现一个SOCKE错误框,意思就是网络连接有错谁能帮我写这个线程类,我对线程知识一无所知,还请朋友们帮忙。
把你的功能代码放到线程当中,然后再timer里面执行线程
type
TRequestURL=class(TThread)
protected
procedure Execute;override;
end;
将你的Url_Check代码加到线程的Execute方法里,再通过TRequestURL.Create(False)调用线程。
这个有什么负面影响吗?
如果这样效果不理想,再考虑用线程.
如果这样效果不理想,再考虑用线程.
这个方法如何使用???我的INDY 现在的版本是9.00.18
还望告知呀
1,至于有时网络比较慢时,程序会出现无响应的情况,可以设个TIMEOUT,过时就重新查询,
2,有时会出现一个SOCKE错误框,意思就是网络连接有错吗,用TRY .....EXECPT