procedure TForm1.Button2Click(Sender: TObject);
var
XmlHttp: Variant;
datetxt: string;
DateLst: TStringList;
mon: string;
timeGMT, GetNetTime: TDateTime;
begin
XmlHttp := CreateOleObject('Microsoft.XMLHTTP');
XmlHttp.Open('Get', 'http://www.baidu.com/', False);
XmlHttp.send;
datetxt := XmlHttp.getResponseHeader('Date');
datetxt := Copy(datetxt, Pos(',', datetxt) + 1, 100);
datetxt := StringReplace(datetxt, 'GMT', '', []);
datetxt := Trim(datetxt);
DateLst := TStringList.Create;
while Pos(' ', datetxt) > 0 do
begin
DateLst.Add(Copy(datetxt, 1, Pos(' ', datetxt) - 1));
datetxt := Copy(datetxt, Pos(' ', datetxt) + 1, 100);
end;
DateLst.Add(datetxt);
if DateLst[1] = 'Jan' then
mon := '01'
else if DateLst[1] = 'Feb' then
mon := '02'
else if DateLst[1] = 'Mar' then
mon := '03'
else if DateLst[1] = 'Apr' then
mon := '04'
else if DateLst[1] = 'Mar' then
mon := '05'
else if DateLst[1] = 'Jun' then
mon := '06'
else if DateLst[1] = 'Jul' then
mon := '07'
else if DateLst[1] = 'Aug' then
mon := '08'
else if DateLst[1] = 'Sep' then
mon := '09'
else if DateLst[1] = 'Oct' then
mon := '10'
else if DateLst[1] = 'Nov' then
mon := '11'
else if DateLst[1] = 'Dec' then
mon := '12';
timeGMT := StrToDateTime(DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3]);
GetNetTime := IncHour(TimeGMT, 8);
Label1.Caption := FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime);
end;
各位帮帮,我这么写编译运行时总是提示错误提示 “List index out of bounds (1)” 不知道是哪里错了啊。请各位大虾帮帮。感谢不尽~
解决方案 »
- 两个exe 能和窗体一样 ShowModal模式啊?
- 什么地方可以买到Borland Delphi 2005的产品介绍的书?
- 请问各位大侠有什么树形网格控件比较好用
- 斑竹请进,两天了,无法解决,超怪超难问题!关于线程查询数据库问题,在线等待
- 奇怪,下了个BDE5.2 UPDATE 竟然不能安装
- 快捷方式问题!谁知道。麻烦帮忙解决下,小弟谢过啦
- 一个很急的小问题!
- 哪里有做异形窗体的源程序或控件
- 一个事务处理的问题:将两层结构的事务转换到三层结构!
- HELP ME!!!!!!!!急需注册版的SKIN OCX
- delphi7使用ado存取冷僻字保存至oracle数据库
- 大家delphi2011了没有?貌似很多三方控件不能用了。我又换回2010了
timeGMT := StrToDateTime(DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3]);
Delphi(Pascal) code
procedure TForm1.Button2Click(Sender: TObject);
var
XmlHttp: Variant;
datetxt: string;
DateLst: TStringList;
mon: string;
timeGMT, GetNetTime: TDateTime;
begin
//......
DateLst.Add(datetxt);
if DateLst.Count<2 then
Label1.Caption := '获取时间失败!'
else
begin
if DateLst[1] = 'Jan' then
mon := '01'
//......
GetNetTime := IncHour(TimeGMT, 8);
Label1.Caption := FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime);
end;
end;尝试将 'http://www.baidu.com/' 换成:
'http://www.163.com/'
或
'http://cn.yahoo.com/'
试试。
代码我测试通过。
'http://www.163.com/'
或
'http://cn.yahoo.com/'
试试。
代码我测试通过。抱歉,换成什么都会出现“List index out of bounds (1)” 不是URL的问题。也不是服务器的问题。你换成其他的可以多试几次也同样报错。
begin
DateLst.Add(Copy(datetxt, 1, Pos(' ', datetxt) - 1));
datetxt := Copy(datetxt, Pos(' ', datetxt) + 1, 100);
end;
DateLst.Add(datetxt);
改成:
DateLst.DelimitedText := datetxt;
DateLst.Delimiter := ' ';
再跟踪一下DateLst的内容
如果是数据库服务器且数据库服务端口允许开放,也可以直接取数据库时间
DateLst.Delimiter := ' ';
也经常会失败。按我说的增加一行失败时的提示即可。
代码我是经过测试的,没问题。