我最近用nmftp控件做一个文件传输方面的东西,发现当用nmftp1.list的时候经常出现整个应用程序没有反映,CPU的利用率,达100% 不知道是控件本身的bug还是怎么回事,请高手帮忙,还有在用nmftp控件的时候还会出现哪些问题,请大家来讨论。
解决方案 »
- Paradox数据库,如何修改textmemo字段的内容?
- 请问能把DLL中的一个类导出吗?然后在另一个delphi应用程序中使用该类创建对象。
- 如何获得listbox的scroll事件?
- 如何向 DBctrlgrid 中动态加入一个 DBEDIT 控健?
- 请高手告诉我怎解决,很简单------当场给分!!!!!!!!!!!!!!!!!!!!!!
- 通过indy的Pop3控件怎么获得一个邮箱中邮件的数量
- DELPHI中SOCKET组件在设为阻塞状态下,线程如何使用读取数据(急,在线等待)
- Delphi 调用 labview 的dll 字符串问题
- 求滚动抽奖程序
- 我的delphi程序出乱子了!
- 怎么对摄像头拍摄到的图象进行视频实时压缩?
- 使用TreeView时,用图标显示,怎么才能使选中的节点的图标不变?
我做过ftp客户端,支持upload download
但是没有出现你说的情况
把你的代码贴出来看看
联系人:刘先生
TEL:38891464
FAX:38891460
EMAIL:[email protected]
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, Outlook8, ExtCtrls, ComCtrls, Psock, NMFtp,shellapi;type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
btnConnect: TButton;
btnDisconnect: TButton;
btnDir: TButton;
ListBox1: TListBox;
btnUpload: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
btnDownload: TButton;
Edit3: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
StatusBar1: TStatusBar;
Bevel1: TBevel;
Edit5: TEdit;
btnCD: TButton;
Label5: TLabel;
Edit6: TEdit;
Edit7: TEdit;
btnRename: TButton;
Label6: TLabel;
Edit8: TEdit;
btnDelete: TButton;
Button1: TButton;
Button2: TButton;
Edit9: TEdit;
Edit10: TEdit;
Button3: TButton;
NMFTP1: TNMFTP;
procedure FormCreate(Sender: TObject);
procedure btnConnectClick(Sender: TObject);
procedure btnDisconnectClick(Sender: TObject);
procedure NMFTP1Connect(Sender: TObject);
procedure NMFTP1Disconnect(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
procedure btnDirClick(Sender: TObject);
procedure NMFTP1ListItem(Listing: String);
procedure btnCDClick(Sender: TObject);
procedure btnUploadClick(Sender: TObject);
procedure NMFTP1PacketSent(Sender: TObject);
procedure btnDownloadClick(Sender: TObject);
procedure NMFTP1PacketRecvd(Sender: TObject);
procedure btnRenameClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
//init
Edit1.Text:='192.100.100.1';
Edit2.Text:='21';
//ftp time out value
NMFTP1.TimeOut:=20000;
//edit property
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
end;procedure TForm1.btnConnectClick(Sender: TObject);
begin // server info
NMFTP1.Host := Edit1.Text;
NMFTP1.Port := StrToInt(Edit2.Text);
NMFTP1.UserID := 'anonymous';
NMFTP1.Password := '[email protected]';
NMFTP1.Connect;
//NMFTP1.Mode(MODE_BYTE);
end;procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
NMFTP1.Disconnect;
end;procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Connected';
end;procedure TForm1.NMFTP1Disconnect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Disconnected';
end;procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
begin
Case Trans_Type of
cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir success';
cmdMakeDir: StatusBar1.SimpleText := 'MakeDir success';
cmdDelete: StatusBar1.SimpleText := 'Delete success';
cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir success';
cmdList: StatusBar1.SimpleText := 'List success';
cmdRename: StatusBar1.SimpleText := 'Rename success';
cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore success';
cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore success';
cmdDownload: StatusBar1.SimpleText := 'Download success';
cmdUpload: StatusBar1.SimpleText := 'Upload success';
cmdAppend: StatusBar1.SimpleText := 'UploadAppend success';
cmdReInit: StatusBar1.SimpleText := 'ReInit success';
cmdAllocate: StatusBar1.SimpleText := 'Allocate success';
cmdNList: StatusBar1.SimpleText := 'NList success';
cmdDoCommand: StatusBar1.SimpleText := 'DoCommand success';
end;
end;procedure TForm1.NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
begin
Case Trans_Type of
cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir failure';
cmdMakeDir: StatusBar1.SimpleText := 'MakeDir failure';
cmdDelete: StatusBar1.SimpleText := 'Delete failure';
cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir failure';
cmdList: StatusBar1.SimpleText := 'List failure';
cmdRename: StatusBar1.SimpleText := 'Rename failure';
cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore failure';
cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore failure';
cmdDownload: StatusBar1.SimpleText := 'Download failure';
cmdUpload: StatusBar1.SimpleText := 'Upload failure';
cmdAppend: StatusBar1.SimpleText := 'UploadAppend failure';
cmdReInit: StatusBar1.SimpleText := 'ReInit failure';
cmdAllocate: StatusBar1.SimpleText := 'Allocate failure';
cmdNList: StatusBar1.SimpleText := 'NList failure';
cmdDoCommand: StatusBar1.SimpleText := 'DoCommand failure';
end;end;procedure TForm1.btnDirClick(Sender: TObject);
begin
//clear old info
ListBox1.Items.Clear;
//Dir
try
NMFTP1.list;
except
//error trap
end;end;procedure TForm1.NMFTP1ListItem(Listing: String);
begin
//add dir
ListBox1.Items.Add(Listing);
end;procedure TForm1.btnCDClick(Sender: TObject);
begin
//change dir
Try
NMFTP1.ChangeDir(Edit5.Text);
Except
end;
end;procedure TForm1.btnUploadClick(Sender: TObject);
var
localfname:string;
remotefname:string;
begin
//UPLOAD
if OpenDialog1.Execute then
begin
localfname:=OpenDialog1.FileName;
remotefname:=Edit3.Text;
if remotefname='' then
remotefname:=extractfilename(localfname);
try
NMFTP1.UploadRestore(localfname, remotefname,11);
except
nmftp1.Disconnect;
end;
end;
end;procedure TForm1.NMFTP1PacketSent(Sender: TObject);
begin
//show percent
StatusBar1.SimpleText :=
inttostr(round((NMFTP1.BytesSent/NMFTP1.BytesTotal)*100))+'%';
end;procedure TForm1.btnDownloadClick(Sender: TObject);
var
localfname:string;
remotefname:string;
begin
if SaveDialog1.Execute then
begin
localfname:=SaveDialog1.FileName;
remotefname:=Edit4.Text;
if remotefname='' then
exit;
try
NMFTP1.Download(remotefname, localfname);
except
end;
end;
end;procedure TForm1.NMFTP1PacketRecvd(Sender: TObject);
begin
StatusBar1.SimpleText :=
inttostr((Round((NMFTP1.BytesRecvd/NMFTP1.BytesTotal)*100)))+'%';
end;procedure TForm1.btnRenameClick(Sender: TObject);
var
sourfname:string;
dentfname:string;
begin
sourfname:=Edit6.Text;
if sourfname='' then
exit;
dentfname:=Edit7.Text;
if dentfname='' then
exit;
try
NMFTP1.Rename(sourfname, dentfname);
except
end;
end;procedure TForm1.btnDeleteClick(Sender: TObject);
var
remotefname:string;
begin
//delete
remotefname:=Edit8.Text;
if remotefname='' then
exit;
try
NMFTP1.Delete(remotefname);
except
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
try
NMFTP1.MakeDirectory(Edit9.Text);
except
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
try
NMFTP1.RemoveDir(Edit10.Text);
except
end;
end;
begin
//这里应该加一句,否则循环操作后,一定是很费系统资源的
listbox1.clear;
ListBox1.Items.Add(Listing);
end;
其实Delphi 7里面他貌似不叫nmftp 而是应该用TidFTP