关于一段用idftp编写的文件上传下载代码编译报错

chuhonglu 2011-09-03 08:59:26
下面的代码报以下4条错误,请问如何修改
[Error] Unit1.pas(108): Undeclared identifier: 'ditFile'
[Error] Unit1.pas(109): Operator not applicable to this operand type
[Error] Unit1.pas(117): Undeclared identifier: 'MsgBox'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

unit Unit1;

interface

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

type
TForm1 = class(TForm)
IdFTP1: TIdFTP;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
Memo2: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
tr : Tstrings;
begin //连接
tr := TStringlist.Create;
try
try
idftp1.Passive := True;
idftp1.Host := edit1.Text; //FTP服务器地址
idftp1.Username := edit2.Text; //FTP服务器用户名
idftp1.Password := edit3.Text; //FTP服务器密码
idftp1.Connect(); //连接到ftp
idftp1.ChangeDir('client'); //进入到client子目录
//idftp1.ChangeDir('..'); //回到上一级目录
Edit1.Text := idftp1.RetrieveCurrentDir;//得到初始目录
idftp1.List(tr,'*.rar',false); //得到client目录下所有文件列表
Memo1.Lines.Assign(tr);
except
on E: Exception do
begin
MessageBox(Self.Handle,Pchar('系统提示您:'+e.Message),Pchar(self.Caption),MB_OK+MB_ICONERROR);
// memo2.Lines.Add('Exception');
end;
end;
finally
tr.Free;
end;
end;

procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
{case AStatus of
hsResolving : showmessage('hsResolving');
hsConnecting: showmessage('hsConnecting');
hsConnected: showmessage('hsConnected');
hsDisconnecting: showmessage('hsDisconnecting');
hsDisconnected: showmessage('hsDisconnected');
hsStatusText: showmessage('hsStatusText');
ftpTransfer: showmessage('文件传送完毕。');
ftpReady: showmessage('准备传送文件....');
ftpAborted: showmessage('传送失败');
end; }
// (ASender As TIdftp).
memo2.Lines.Add(AStatusText)
// showmessage(AStatusText);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Dir_List:TStringList;
i :integer;
begin //下载
if not IdFTP1.Connected then idftp1.Connect(True);
Dir_List:=TStringList.Create;
idftp1.ChangeDir('..');
IdFTP1.TransferType := ftASCII; //ftBinary; //指定为二进制文件 或文本文件ftASCII
idftp1.List(Dir_List,'',true);
memo1.Lines.Assign(Dir_List);
//更改传输类型
IDFTP1.TransferType:=ftBinary;
ProgressBar1.Min :=0;
ProgressBar1.Max := Dir_List.Count;
for i:=0 to Dir_List.Count-1 do
begin
if (IdFTP1.DirectoryListing.Items[i].ItemType = ditFile)
and (IdFTP1.DirectoryListing.Items[i].ModifiedDate > StrToDate('2011-3-19')) then //如果是文件,且在规定时间之后
begin
memo2.Lines.Add(IdFTP1.DirectoryListing.Items[i].FileName+' ('+IntToStr(IdFTP1.DirectoryListing.Items[i].Size)+' Byte) Start Download....');
{ try
IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,'d:\FTPtest\'+IdFTP1.DirectoryListing.Items[i].FileName,true,True); //下载到本地,并为覆盖,且支持断点续传
except
end; }
if FileExists('d:\FTPtest\'+IdFTP1.DirectoryListing.Items[i].FileName) then
case MsgBox(IdFTP1.DirectoryListing.Items[i].FileName+'文件已经存在,要续传吗?'#13#10'是——续传'#10#13'否——覆盖'#13#10'取消——取消操作',MB_YESNOCANCEL+MB_ICONINFORMATION) of
IDYES: begin
//参数说明: 源文件,目标文件,是否覆盖,是否触发异常(True为不触发)。
IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,'d:\FTPtest\'+IdFTP1.DirectoryListing.Items[i].FileName,False,True);
end;
IDNO: begin
IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,'d:\FTPtest\'+IdFTP1.DirectoryListing.Items[i].FileName,true);
end;
IDCANCEL:
begin
end;
end
else
IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,'d:\FTPtest\'+IdFTP1.DirectoryListing.Items[i].FileName);
end;
ProgressBar1.Position:=i+1;
end;
MessageBox(Self.Handle,Pchar('系统提示您:本次操作完毕。'),Pchar(self.Caption),MB_OK+MB_ICONINFORMATION);
ProgressBar1.Position:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
fi : string;
begin //上传
if OpenDialog1.Execute then
begin
fi := OpenDialog1.FileName;
IdFTP1.Put(fi,ExtractFileName(fi));//上传,
end;
end;

end.



...全文
119 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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