Форум: "Сети";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизFTP & INDY Найти похожие ветки
← →
stepan_mk (2005-08-05 11:19) [0]DELPHI7
INDY10
есть такой код
...
var s:TstringList;
...
BEGIN
...
if ftp.Connected
then
begin
s:=TStringList.Create;
ftp.List(s);
...
На комаде list получаю ошиПку Index out of bounds(0)
ПРОЧЕМУ? И как сделать чтоб не возникала?
← →
stepan_mk (2005-08-05 12:32) [1]пропобал и так писать
...
BEGIN
...
if ftp.Connected
then
begin
ftp.List;
...
ОшиПка та же
← →
Alexander Panov © (2005-08-05 13:13) [2]stepan_mk (05.08.05 12:32) [1]
TIdFtp - событийно-зависимый компонент. Следовательно, выполнять некоторое действие(в данном случае List), надо по наступлению некоторого события.
У тебя это событие - OnConnect(либо подобное).
Подробнее см. в справке.
← →
stepan_mk (2005-08-05 14:10) [3]У меня пере етим есть Connect, Get, и ещё куча кода.
А потом ели надо то ищется нужний файл в директории
← →
Alexander Panov © (2005-08-05 14:31) [4]Вот пример. Правда Инди версии 9. Но думаю, что тут отличий не должно быть.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
var
WM_FTPEndGetFile: Cardinal;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
public
procedure MyWndProc(var Message: TMessage);
end;
var
Form1: TForm1;
implementation
uses uSimpleGetFTP;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
TSimpleGetFTP.Create("ftp.almar.net.ru","!readme.txt","!readme.txt",Handle,WM_FTPEndGetFile);
end;
procedure TForm1.MyWndProc(var Message: TMessage);
begin
if Message.Msg = WM_FTPEndGetFile then
begin
Button1.Enabled := True;
case Message.WParam of
0: ;
1: ;
2: ;
100: Memo1.Lines.Assign(TStringList(Message.LParam));
end;
Message.Result := 0;
Exit;
end;
WndProc(Message);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title := Self.Caption;
WM_FTPEndGetFile := RegisterWindowMessage(PChar(Application.Title+IntToStr(Application.Handle)));
WindowProc := MyWndProc;
end;
end.
unit uSimpleGetFTP;
interface
uses
Classes, Windows,IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, IdFTPCommon;
type
TSimpleGetFTP = class(TThread)
private
FHandle: THandle;
FMessage: Cardinal;
FFTP: TIdFtp;
FUrl,FSrcFile,FDestFile: String;
protected
procedure Execute; override;
public
constructor Create(const aURL, aFile, aDestFile: String; aHandle: THandle; IdMessage: Cardinal);
destructor Destroy; override;
end;
implementation
constructor TSimpleGetFTP.Create(const aURL, aFile, aDestFile: String; aHandle: THandle; IdMessage: Cardinal);
begin
inherited Create(True);
FreeOnTerminate := True;
FUrl := aUrl;
FSrcFile := aFIle;
FDestFIle := aDestFIle;
FHandle := aHandle;
FMessage := idMessage;
Resume;
end;
destructor TSimpleGetFTP.Destroy;
begin
FFtp.Free;
inherited;
end;
procedure TSimpleGetFTP.Execute;
var
Err: Cardinal;
List: TStringList;
begin
List := TStringList.Create;
try
FFtp := TIdFtp.Create(nil);
FFtp.Host := FUrl; //+";";
FFtp.Password := "aaa@aaa.aaa";
FFtp.Username := "Anonymous";
FFtp.TransferType := ftBinary;
FFTp.Passive := True;
Err := 0;
try
if Err=0 then FFTP.Connect;
except
Err := 1;
end;
try
if Err=0 then
begin
// FFtp.ChangeDirUp;
// FFtp.ChangeDir("/pub/farplugins/");
FFtp.List(List);
SendMessage(FHandle,FMessage,100,Integer(List));
end;
except
Err := 3;
end;
try
if Err=0 then FFTP.Get(FSrcFile,FDestFile,True,False);
except
Err := 2;
end;
try
FFTP.Disconnect;
except
end;
SendMessage(FHandle,FMessage,Err,0);
finally
List.Free;
end;
end;
end.
← →
stepan_mk (2005-08-05 14:59) [5]1. Не врубился что означает
SendMessage(FHandle,FMessage,100,Integer(List));
2. На Indy 9 у меня всё пахало.
← →
Alexander Panov © (2005-08-06 17:32) [6]stepan_mk (05.08.05 14:59) [5]
1. Не врубился что означает
SendMessage(FHandle,FMessage,100,Integer(List));
Так организована передача результата из одного потока в другой(основной). Передается ссылка на TStringList.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c