送分:网络下载get的一个难题,高手请进!试试能力。

jybsky 2002-12-17 03:59:17
var
tmpStream:TFileStream;
idHttp1:TIDhttp;
AOwner:TComponent;
begin

idHttp1:=TIDHttp.Create(AOwner);
tmpStream:=TFileStream.Create('\download\filename',fmCreate);
try
idhttp1.Get('http://192.168.1.100:5000/filename',tmpStream);
finally
tmpStream.Free;
idHttp1.Free;
end;
可以成功下载filename文件,但是
将idhttp1.Get('http://192.168.1.100:5000/filename',tmpStream);中的ip地址换成用一个字符串代替如
address:='http://192.168.1.100:5000/filename';
idhttp1.Get(address,tmpStream);为什么却不行,怎么才行?
...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
china0452 2003-03-28
  • 打赏
  • 举报
回复
我试过了,可以啊!
yzdiyu 2003-03-12
  • 打赏
  • 举报
回复
担心是指针,可以用pchar看看.
core_blood 2003-03-12
  • 打赏
  • 举报
回复
我写得可以啊???
你看看
core_blood 2003-03-12
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Button1: TButton;
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label3: TLabel;
StatusBar1: TStatusBar;
Memo2: TMemo;
SaveDialog1: TSaveDialog;
Label4: TLabel;
Edit4: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
SaveDialog2: TSaveDialog;
procedure IdHTTP1Connected(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure IdHTTP1Disconnected(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
private
{ Private declarations }
ProgressBar:TProgressBar ; // 进度条组件
ProgressBarRect:TRect; // 进度条组件的尺寸
public
{ Public declarations }
end;

var
Form1: TForm1;
s:Tstringstream;
f:tfilestream;

implementation

{$R *.dfm}

procedure TForm1.IdHTTP1Connected(Sender: TObject);
begin
showmessage('Connect!')
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.IdHTTP1.Disconnect;
end;

procedure TForm1.IdHTTP1Disconnected(Sender: TObject);
begin
showmessage('Disconnect!')
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ABaseDir,ASourceDir,SaveDir:string;
ii,iib,iis:longint;
begin
ABaseDir:=form1.Edit1.Text;
// 定义2个值为一个循环的2端
iib:=strtoint(form1.Edit2.Text);
iis:=strtoint(form1.Edit3.Text);
for ii:=iib to iis do
begin
application.ProcessMessages;
//在一个循环开始的时候给出一个权限给其他部件相应系统消息
ASourceDir:=ABaseDir+inttostr(ii)+'/'+inttostr(ii)+'.pdf';
SaveDir:=form1.Edit4.Text+'\'+inttostr(ii)+'.pdf';

s:=Tstringstream.Create('');
form1.IdHTTP1.Get(ASourceDir,s);
//把Asourcedir的文件以流的格式写入到一个变量S中
f:=tfilestream.Create(SaveDir,fmCreate);
//创建文件SaveDir
s.Seek(0,soFromBeginning);
//把指针移到S的开始的位置
f.CopyFrom(s,s.Size);
//释放资源
s.Free;
f.Free;
form1.Memo2.Lines.Add(ASourceDir+'下载成功');


end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
s:string;
begin
form1.SaveDialog1.Execute;
s:=ExtractFileDir(form1.SaveDialog1.FileName);

form1.Edit4.Text:=s;
end;

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
ProgressBarRect:=Rect;
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
Application.ProcessMessages;
//form1.StatusBar1.Panels[1].
ProgressBar:=TProgressBar.Create(Form1);

with ProgressBar do
begin
//设定进度条的位置、宽度和高度
Top:=ProgressBarRect.Top ;
Left:=ProgressBarRect.Left ;
Width:=ProgressBarRect.Right-ProgressBarRect.Left ;
Height:=ProgressBarRect.Bottom-ProgressBarRect.Top;
Visible:=True; // 显示进度条
//try
Parent:=StatusBar1;
progressbar.Position:=1;
progressbar.Max:=aworkcountmax;
//progressbar1.Position:=1;
//progressbar1.Max:=aworkcountmax;
end;

end;

procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
progressbar.Position:=progressbar.Max;
ProgressBar.Free;

//form1.StatusBar1.Panels[0].Text:=(ASourceDir+'下载完毕!');

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.StatusBar1.Panels[0].Text:='PDF图书下载';
end;

procedure TForm1.Button4Click(Sender: TObject);
var
sdir:string;
begin
form1.SaveDialog2.Execute;
sdir:=form1.savedialog2.filename;
form1.Memo2.Lines.SaveToFile(sdir);
form1.Memo2.Lines.Clear;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
//progressbar1.Position:=0;
//progressbar1.Max:=0;
//ProgressBar.StepBy(AWorkCount);
progressbar.Position:=aworkcount;
//progressbar1.Position:=aworkcount;

end;

end.
knife_s 2002-12-17
  • 打赏
  • 举报
回复
学习
jybsky 2002-12-17
  • 打赏
  • 举报
回复
具体一点?
linx88 2002-12-17
  • 打赏
  • 举报
回复
get的参数可能是指针。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧