![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создать список фаилов на FTP сервере при помощи NMFTP [D6]
ALEKCEY © (2004-02-11 20:01:00)Как создать список фаилов на FTP сервере при помощи NMFTP и поместить его в listbox или memo.
Если можно то с конкретным кодом.
Всем заранее спасибо.
ALEKCEY (2004-02-14 17:36:00) [1]всё здорово и прекрасно, но список фаилов на сервере всёравно нигде не показывается
gavrila (2004-02-11 20:33:00) [2]Часть 2
procedure TForm1.NMFTP1AuthenticationNeeded(var Handled: Boolean);
var
APass,
AnID: String;
begin
if NMFTP1.Password = '' then
begin
if InputQuery('Password needed', 'Enter password: ', APass) then
begin
NMFTP1.Password := APass;
Handled := TRUE;
end
else
Handled := FALSE;
end;
if NMFTP1.UserID = '' then
begin
if InputQuery('User ID needed', 'Enter User ID: ', AnID) then
begin
NMFTP1.UserID := AnID;
Handled := TRUE;
end
else
Handled := FALSE;
end;
end;
procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
Memo1.Lines.Add('Connected');
Button1.Caption := 'Disconnect';
end;
procedure TForm1.NMFTP1Disconnect(Sender: TObject);
begin
Memo1.Lines.Add('Disconnected');
Button1.Caption := 'Connect';
end;
procedure TForm1.NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
begin
case Trans_Type of
cmdChangeDir: Memo1.Lines.Add('ChangeDir failed');
cmdMakeDir: Memo1.Lines.Add('MakeDir failed');
cmdDelete: Memo1.Lines.Add('Delete failed');
cmdRemoveDir: Memo1.Lines.Add('RemoveDir failed');
cmdList: Memo1.Lines.Add('List failed');
cmdRename: Memo1.Lines.Add('Rename failed');
cmdUpRestore: Memo1.Lines.Add('UploadRestore failed');
cmdDownRestore: Memo1.Lines.Add('DownloadRestore failed');
cmdDownload: Memo1.Lines.Add('Download failed');
cmdUpload: Memo1.Lines.Add('Upload failed');
cmdAppend: Memo1.Lines.Add('UploadAppend failed');
cmdReInit: Memo1.Lines.Add('Reinitialize failed');
cmdAllocate: Memo1.Lines.Add('Allocate failed');
cmdNList: Memo1.Lines.Add('NList failed');
cmdDoCommand: Memo1.Lines.Add('DoCommand failed');
cmdCurrentDir: Memo1.Lines.Add('CurrentDir failed');
end;
end;
procedure TForm1.NMFTP1PacketRecvd(Sender: TObject);
begin
StatusBar1.SimpleText := 'Received '+IntToStr(NMFTP1.BytesRecvd)+' bytes of '+IntToStr(NMFTP1.BytesTotal)+' total';
end;
procedure TForm1.NMFTP1PacketSent(Sender: TObject);
begin
StatusBar1.SimpleText := 'Sent '+IntToStr(NMFTP1.BytesSent)+' bytes of '+IntToStr(NMFTP1.BytesTotal)+' total';
end;
procedure TForm1.NMFTP1TransactionStart(Sender: TObject);
begin
Memo1.Lines.Add('Data transfer start');
end;
procedure TForm1.NMFTP1TransactionStop(Sender: TObject);
begin
Memo1.Lines.Add('Data transfer end');
end;
procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
var
I: Integer;
begin
case Trans_Type of
cmdList:
begin
for I := 0 to (StringGrid1.ColCount - 1) do
StringGrid1.Cols[I].Clear;
StringGrid1.RowCount := NMFTP1.FTPDirectoryList.name.Count;
StringGrid1.ColCount := 4;
StringGrid1.Cells[0, 0] := 'Filename';
StringGrid1.Cells[1, 0] := 'File Size';
StringGrid1.Cells[2, 0] := 'Modified Date';
StringGrid1.Cells[3, 0] := 'Attributes';
for I := 0 to (NMFTP1.FTPDirectoryList.name.Count - 1) do
with NMFTP1.FTPDirectoryList do
begin
StringGrid1.Cells[0, I+1] := name[I];
StringGrid1.Cells[1, I+1] := Size[I];
StringGrid1.Cells[2, I+1] := ModifDate[I];
StringGrid1.Cells[3, I+1] := Attribute[I];
end;
end;
cmdChangeDir:
begin
Memo1.Lines.Add('ChangeDir successful');
NMFTP1.List;
end;
cmdMakeDir: Memo1.Lines.Add('MakeDir successful');
cmdRemoveDir: Memo1.Lines.Add('RemoveDir successful');
cmdDelete: Memo1.Lines.Add('Delete successful');
cmdRename: Memo1.Lines.Add('Rename successful');
cmdReInit: Memo1.Lines.Add('Reinitialize successful');
cmdCurrentDir: Memo1.Lines.Add('CurrentDir successful');
end;
end;
procedure TForm1.NMFTP1UnSupportedFunction(Trans_Type: TCmdType);
begin
case Trans_Type of
cmdChangeDir: Memo1.Lines.Add('ChangeDir not supported by this server');
cmdMakeDir: Memo1.Lines.Add('MakeDir not supported by this server');
cmdDelete: Memo1.Lines.Add('Delete not supported by this server');
cmdRemoveDir: Memo1.Lines.Add('RemoveDir not supported by this server');
cmdList: Memo1.Lines.Add('List not supported by this server');
cmdRename: Memo1.Lines.Add('Rename not supported by this server');
cmdUpRestore: Memo1.Lines.Add('UploadRestore not supported by this server');
cmdDownRestore: Memo1.Lines.Add('DownloadRestore not supported by this server');
cmdDownload: Memo1.Lines.Add('Download not supported by this server');
cmdUpload: Memo1.Lines.Add('Upload not supported by this server');
cmdAppend: Memo1.Lines.Add('UploadAppend not supported by this server');
cmdReInit: Memo1.Lines.Add('Reinitialize not supported by this server');
cmdAllocate: Memo1.Lines.Add('Allocate not supported by this server');
cmdNList: Memo1.Lines.Add('NList not supported by this server');
cmdDoCommand: Memo1.Lines.Add('DoCommand not supported by this server');
cmdCurrentDir: Memo1.Lines.Add('CurrentDir not supported by this server');
end;
end;
procedure TForm1.Button11Click(Sender: TObject);
Var RemoteFileName: String;
begin
if InputQuery('Download', 'Remote File: ', RemoteFileName) then
if OpenDialog1.Execute then
NMFTP1.Download(RemoteFileName, OpenDialog1.FileName);
end;
procedure TForm1.Button12Click(Sender: TObject);
var
LocalFile,
RemoteFile: String;
F: File of Byte;
FSize: Integer;
O: TOpenDialog;
begin
O := TOpenDialog.Create(Self);
try
O.Title := 'Select file to upload';
if O.Execute then
if InputQuery('Choose Remote File Name', 'Filename?', RemoteFile) then
begin
LocalFile := O.FileName;
AssignFile(F, LocalFile);
Reset(F);
FSize := FileSize(F);
CloseFile(F);
NMFTP1.Allocate(FSize);
NMFTP1.Upload(LocalFile, RemoteFile);
end;
finally
O.Free;
end;
end;
end.
gavrila (2004-02-11 20:32:00) [3]Вот пример, когда пробовал, должен работать, а вообще я его в хелпе нашел
привожу по частям, т.к. макс. символов = 7168
Часть1
unit FTPExample;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, ComCtrls, Psock, NMFtp;
type
TForm1 = class(TForm)
FTPHost: TEdit;
Label1: TLabel;
Label2: TLabel;
FTPLogin: TEdit;
FTPPassword: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Memo1: TMemo;
Label4: TLabel;
StringGrid1: TStringGrid;
Label5: TLabel;
StatusBar1: TStatusBar;
NMFTP1: TNMFTP;
Button11: TButton;
OpenDialog1: TOpenDialog;
Button12: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure NMFTP1AuthenticationFailed(var Handled: Boolean);
procedure NMFTP1AuthenticationNeeded(var Handled: Boolean);
procedure NMFTP1Connect(Sender: TObject);
procedure NMFTP1Disconnect(Sender: TObject);
procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
procedure NMFTP1PacketRecvd(Sender: TObject);
procedure NMFTP1PacketSent(Sender: TObject);
procedure NMFTP1TransactionStart(Sender: TObject);
procedure NMFTP1TransactionStop(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1UnSupportedFunction(Trans_Type: TCmdType);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
implementation
{$R *.DFM}
var
GetPut : String;
procedure TForm1.Button1Click(Sender: TObject);
begin
If NMFTP1.Connected Then
Begin
NMFTP1.Disconnect;
// Button1.Caption:= 'Connect';
End
Else
Begin
NMFTP1.Vendor := NMOS_Auto;
NMFTP1.Host := FTPHost.text;
NMFTP1.UserID := FTPLogin.text;
NMFTP1.Password := FTPPassword.text;
NMFTP1.Connect;
// Button1.Caption:= 'Disconnect';
End;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
NMFTP1.List;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
TheDir: String;
begin
if InputQuery('Change Directory', 'Which directory?', TheDir) then
NMFTP1.ChangeDir(TheDir);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
TheDir: String;
begin
if InputQuery('Create Directory', 'Directory name?', TheDir) then
NMFTP1.MakeDirectory(TheDir);
end;
procedure TForm1.Button5Click(Sender: TObject);
var
TheDir: String;
begin
if InputQuery('Remove Directory', 'Directory name?', TheDir) then
NMFTP1.RemoveDir(TheDir);
end;
procedure TForm1.Button6Click(Sender: TObject);
var
TheFile: String;
begin
if InputQuery('Delete File', 'File name?', TheFile) then
NMFTP1.Delete(TheFile);
end;
procedure TForm1.Button7Click(Sender: TObject);
var
OldFile,
NewFile: String;
begin
if InputQuery('Rename file', 'File to rename?', OldFile) then
if InputQuery('Rename file', 'New file name?', NewFile) then
NMFTP1.Rename(OldFile, NewFile);
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
ShowMessage('After reinitilizing, you must click the authenticate button');
NMFTP1.Reinitialize;
end;
procedure TForm1.Button9Click(Sender: TObject);
var
AnID,
APass: String;
begin
if InputQuery('Authentication needed', 'Enter User ID', AnID) then
if InputQuery('Authentication needed', 'Enter Password', APass) then
begin
NMFTP1.DoCommand('USER '+AnID);
NMFTP1.DoCommand('PASS '+APass);
end;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
ShowMessage(NMFTP1.CurrentDir);
end;
procedure TForm1.NMFTP1AuthenticationFailed(var Handled: Boolean);
var
ThePass,
TheID: String;
begin
if MessageDlg('Authentication Failed. Retry?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
ThePass := NMFTP1.Password;
TheID := NMFTP1.UserID;
InputQuery('Reauthenticate', 'Enter User ID', TheID);
InputQuery('Reauthenticate', 'Enter Password', ThePass);
NMFTP1.Password := ThePass;
NMFTP1.UserID := TheID;
Handled := TRUE;
end;
end;