Delphi:如何将互联网上的文本文件加载到字符串中?

4
在我的程序中,我有一个函数用于检查程序的当前版本,它从URL获取:www.tablemaster.webs.com/versioninfo.txt
正如您所看到的,URL上只有纯文本。我需要将此文本从URL加载到程序的字符串中,我该如何做?我已经搜索了一些内容,但没有找到任何信息。
PS:我需要尽可能简单的代码。
提前感谢 :)

3
这几乎可以肯定是重复的。 - Andreas Rejbrand
如果您展示一下首先如何从URL获取文本,那么我们知道从哪里开始;这有助于您达到目标。 :-) - Ken White
1
可能是Delphi 7将HTTP请求转换为字符串的重复问题。 - Warren P
这里接受的答案有一个名为WebGetData的函数,看起来很合适:https://dev59.com/7E7Sa4cB1Zd3GeqP1zxx#2977783 - Warren P
4个回答

24

我将使用Indy的TIdHTTP,并使用其最简单的GET重载方式:

uses
  IdHTTP;

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
  IdHTTP: TIdHTTP;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    S := IdHTTP.Get('http://www.tablemaster.webs.com/versioninfo.txt');
    ShowMessage(S);
  finally
    IdHTTP.Free;
  end;
end;

很高兴有一个新的个人匿名投票者;我已经失去了一个很长时间 :-) - TLama
1
请给我点个赞,以对抗这种情况。 - Warren P
谢谢,我知道有点晚了,但这是我最终采用的代码方法。 - James

2
您可以使用来自myfxboard的TIEHTTP组件, 使用TIEHTTP从URL加载txt文件:
http.ExecuteURL('www.tablemaster.webs.com/versioninfo.txt');
Memo1.Lines.Add(http.sl.Text);

1

如果我已在项目中使用XML,我会使用MSXML2_TLB。自Internet Explorer 5.5版本以来,MSXML2已存在于Windows中,因此它很可能存在于系统中。您可以使用主菜单中的“导入类型库”选项,并从列表中选择“Microsoft XML,v6.0”(或更高版本)来获取MSXML2_TLB.pas。

var
  r:XMLHTTP;
begin
  r:=CoXMLHTTP.Create;
  r.open('GET','http://www.tablemaster.webs.com/versioninfo.txt','','');
  r.send(EmptyParam);
  if r.status<>200 then raise Exception.Create(IntToStr(r.status)+' '+r.statusText);
  Result:=r.responseText;
end;

虽然这是一个有趣的替代方案,但我尝试在Windows 7上使用Delphi 2009导入类型库时,只有CoXMLHTTP40CoXMLHTTP60类。没有CoXMLHTTP。而且XMLHTTP接口看起来很奇怪,它不应该以I开头吗? - TLama
这样的细节在Windows和Delphi版本之间确实可能会有所变化。'OLE Class' XMLHTTP不以I开头,该类的对象“公开”IXMLHTTPRequest接口,也许还有其他接口。它类似于古老的COM/OLE理论,并且在实践中,您会发现在TLB单元中它们彼此相等,可以互换使用。 - Stijn Sanders

0

使用 IdHTTP;

procedure TForm1.Button1Click(Sender: TObject); var . .

看起来在这个方法中,系统缓存了 txt 文件,所以如果 web 上的文件发生更改,这个方法将拒绝更改!


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接