急!!!!!如何用Delphi读取网络上的文本文件?(200分)

  • 主题发起人 主题发起人 xleicsu
  • 开始时间 开始时间
X

xleicsu

Unregistered / Unconfirmed
GUEST, unregistred user!
比如文本文件的路径是:
http://www.delphibbs.com/a.txt
如何用delphi读到这个文本文件呢?
对于html文件,读取的方法是不是一样的呢?
 
indy 或 socket
 
读取 下载一个网络文件.pas
user Wininet

function GetInetFile
(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),
INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
try
hURL := InternetOpenURL(hSession,
PChar(fileURL),
nil,0,0,0);
try
AssignFile(f, FileName);
Rewrite(f,1);
repeat
InternetReadFile(hURL, @Buffer,
SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(f);
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;


procedure TForm1.Button1Click(Sender: TObject);
var
FileOnNet, LocalFileName: string;
begin
FileOnNet:='http://www.delphibbs.com/a.txt';
LocalFileName:='a.txt';

if GetInetFile(FileOnNet,LocalFileName)=True then
ShowMessage('Download successful')
else
ShowMessage('Error in file download')

end;
 
楼上的高手啊
 
program Project1;

function URLDownloadToFile(Caller: cardinal; URL: PChar; FileName: PChar; Reserved: LongWord; StatusCB: cardinal): Longint; stdcall; external 'URLMON.DLL' name 'URLDownloadToFileA';
begin
URLDownloadToFile(0, PChar('http://www.delphibbs.com/a.txt'), PChar('C:/txt1.txt'), 0, 0)
end.
 
先下载到硬盘上再打开嘛。


问题: 下载功能的实现? ( 积分: 50 )
分类: 程序员大赛

来自: eryu, 时间: 2002-11-20 19:46:00, ID: 1446209
var
MyStrList: TStringList;
在MyStrList里保存了1个或多个文件的下载路径,请问应该如何下载?
要用到哪些控件?
对网络这部分不熟悉,请给出主要源代码并加以说明,谢谢了。

来自: zw84611, 时间: 2002-11-20 19:48:00, ID: 1446215
如果是http,可以这样:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses urlmon;
{$R *.DFM}

function DownloadFile(Source, Dest: string): Boolean;
begin
try
Result:=UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
except
Result:=False;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if DownloadFile ('http://www.vckbase.com/','c:/index.htm') then
ShowMessage('Download succesful')
else
ShowMessage('Download unsuccesful')

end;

end.


来自: eryu, 时间: 2002-11-20 19:56:00, ID: 1446232
看着好晕啊,怎么这么麻烦,还要自己写函数?
implementation
uses urlmon; //这句是什么意思?
{$R *.DFM}

if DownloadFile ('http://www.vckbase.com/','c:/index.htm') //这句又是什么意思?
请简单说明一下好吗?

有没有简单点的方法?


来自: zw84611, 时间: 2002-11-20 19:58:00, ID: 1446237
它将http://www.vckbase.com/的网页下载,保存为c:/index.htm
我觉得已经够简单了[:)]

来自: genue, 时间: 2002-11-20 20:00:00, ID: 1446239
这样更好:利用INDY控件中的idHTTP很好,简单,好用,稳定!
在Delphi中还有相应的源程序呢,慢慢看吧。

来自: eryu, 时间: 2002-11-20 20:02:00, ID: 1446244
先谢谢了。
但我不是下载网页,是下载文件啊。
并且不止一个文件,那些文件的路径都保存在MyStrList里。
比如:http://www.abc.com/a.exe,http://lsfj.com/jla/ofj.exe等等
要能下完一个,自动下另一个,直到下完。
这要怎么下呢?

来自: 陈晨, 时间: 2002-11-20 20:05:00, ID: 1446249
顺便提一个关于网页下载的问题,有些网站需要登陆才能看到文章,如:codelphi
我怎么样下载这样的网页呢?还有动态生成的网页,如大富翁??


来自: genue, 时间: 2002-11-20 20:06:00, ID: 1446252
哪还不是一样,我网上有个才作的自升级软件就是用它下载EXE升级包的。
你用一个FOR不就简单搞定了。

来自: zw84611, 时间: 2002-11-20 20:07:00, ID: 1446257
文件也是一样的,只要是http而非ftp

来自: eryu, 时间: 2002-11-20 20:12:00, ID: 1446267
那用idHTTP控件怎样下载的呢?是不是简单点?
各位能结合我的问题举个例子吗?
谢谢了!

来自: iapollo, 时间: 2002-11-20 20:16:00, ID: 1446271
下面的例子是从网上下载一个SWF文件
//用了indy控件,
IdHTTP1: TIdHTTP;
...
procedure TForm1.Button1Click(Sender: TObject);
var
tmpStream:TFileStream;
begin
tmpStream:=TFileStream.Create('c:/get.swf',fmCreate);
try
idhttp1.Get('http://www.xxx.com/xxx.swf',tmpStream);
finally
tmpStream.Free;
end;
end;


来自: genue, 时间: 2002-11-20 20:16:00, ID: 1446273
procuder idHTTP1.get(URL,Stream);
fuction idhppp1.get(URL):string;
procuder idHTTP1.post(URL,Stream);
fuction idhppp1.post(URL):string;


来自: eryu, 时间: 2002-11-20 20:29:00, ID: 1446302
多人接受答案了。

得分大富翁: genue-15,iapollo-20,zw84611-15,
 
可不可以不用下载啊?
直接读可以吗?
 
用webbrowser.navegate(fn);试试.
 
后退
顶部