Re: [twsocket] TFtpClient - listing filenames using stream

2016-07-25 Thread Angus Robertson - Magenta Systems Ltd
> 1-  I do need some help to list files in the FTP server I am 
> connecting. I want to use LocalStream (Please see below) 
> 
> 2-  It_s maybe me, but I couldn_t find any sample as to 
> listing of files in a directory using wildcards and excluding 
> directories  (or some how identifying them). Currently, I do not 
> know if I can or how to pass this wildcard to the file listing in 
> order to get only the relevant files listed.

I suggest you look at Magenta Systems File Transfer Components, which
are free components for ICS, that support FTP, HTTP and file copying
from single function calls. 

http://www.magsys.co.uk/delphi/magxfer.asp

You can either save yourself a lot of development testing by using
these components directly, or look at the source code to see how to
list file to a stream and parse the directory.

Note FTP servers do not support wild cards, sub-directories, etc, you
need to do all that work in Delphi.  But the above component does most
it, for instance it gives a list of directory records you can parse to
select or deselect files for download or upload. 

Angus

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


[twsocket] TFtpClient - listing filenames using stream

2016-07-21 Thread Ertan Küçükoğlu
Hi,

 

I am not quite sure as to what version of ICS I have. I read V8.23 somewhere in 
“svn-changelog-icsv8.txt” file, and TFtpClient.FtpClientID is “ICS FTP Client 
V8.09”.

 

In one of my projects I did use TIdFTP for downloading some files. Project is 
finished, and running now. Recently, it’s blocking operation type of working 
started to be a poblem. I am checking TFtpClient samples as to how can I do the 
switch for non-blocking ftp downloads. So far I believe, I can use TFtpClient 
to download a file which I know it’s name and full URL.

 

Though;

1-  I do need some help to list files in the FTP server I am connecting. I 
want to use LocalStream (Please see below) 

2-  It’s maybe me, but I couldn’t find any sample as to listing of files in 
a directory using wildcards and excluding directories  (or some how identifying 
them). Currently, I do not know if I can or how to pass this wildcard to the 
file listing in order to get only the relevant files listed.

 

My current code is:

procedure TForm10.FtpClient1RequestDone(Sender: TObject; RqType: TFtpRequest;

  ErrCode: Word);

var

  TempString: string;

begin

  Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' On 
request:' + IntToStr(Ord(RqType)));

 

  if ErrCode <> 0 then

  begin

Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' *** 
ERROR: ' + FtpClient1.ErrorMessage);

if RqType <> ftpOpenAsync then FtpClient1.QuitAsync;

Exit();

  end;

 

  case RqType of

ftpOpenAsync:FtpClient1.UserAsync();

ftpUserAsync:FtpClient1.PassAsync();

ftpPassAsync:FtpClient1.CwdAsync();

ftpCwdAsync:

begin

  FtpClient1.HostFileName  := EmptyStr;

  FtpClient1.LocalFileName := EmptyStr;

  FtpClient1.LocalStream := TMemoryStream.Create();

  FtpClient1.LsAsync();

end;

ftpLsAsync:

begin

//  FtpClient1.LocalStream.Position := 0;  // Using only these 3 lines also 
giving me similar result

//  SetLength(TempString, FtpClient1.LocalStream.Size);

//  CopyMemory(Pointer(TempString), 
TMemoryStream(FtpClient1.LocalStream).Memory, FtpClient1.LocalStream.Size);

  SetString(TempString, 
PChar(TMemoryStream(FtpClient1.LocalStream).Memory), 
FtpClient1.LocalStream.Size div SizeOf(Char));

  Memo1.Lines.Add('-');

 Memo1.Lines.Add(TempString);

  Memo1.Lines.Add('-');

  FtpClient1.TypeSetAsync();

end;

ftpTypeSetAsync:

begin

  FtpClient1.HostFileName  := 'abcdef.txt';

  FtpClient1.LocalFileName := edtLocalPath.Text + '\' + 
FtpClient1.HostFileName;

  FtpClient1.GetAsync;

end;

ftpGetAsync:

begin

  FStatus := FtpClient1.StatusCode = 226;

  FtpClient1.QuitAsync;

end;

ftpQuitAsync:if FStatus then Memo1.Lines.Add('File Download OK');

else

  Memo1.Lines.Add('Unknown RqType: ' + IntToStr(Ord(RqType)));

  end;

end;

 

 

Part of what I get in Memo is something like below:

= Beginning =

2016-06-22 04:12:01.784 On request:4

2016-06-22 04:12:01.787 > PASV

2016-06-22 04:12:01.938 < 227 Entering Passive Mode (5,229,203,64,227,54).

2016-06-22 04:12:01.953 > NLST

2016-06-22 04:12:02.188 < 150 Opening data connection for (N/A) (*hidden*).

2016-06-22 04:12:02.338 < 226 Closing data connection.  File: N/A

2016-06-22 04:12:02.340 ! 167bytes received/sent in 297 milliseconds

2016-06-22 04:12:02.342 On request:8

-

മ⸊മ匊偍〰㄰䈮义਍〲㔱〱਍䵓ぐ〰⸱千ൖ㈊㄰ㄵറ㈊㄰ㄵല㈊㠰㄰വ㈊㄰〶റ㈊㄰〶ല㈊㠰㄰ശ匊ㅋ⹁千ൖ㈊㄰〶ള㈊㄰〶ഴ匊偍〰㈰䈮义਍䵓ぐ〰⸲千ൖ匊㉋⹁千ൖ㈊㄰〶വ㈊㄰〶ശ

-

2016-06-22 04:12:02.361 > TYPE I

2016-06-22 04:12:02.455 < 200 Command okay.

= END =

 

 

Thanks.

 

Regards,

Ertan Küçükoğlu

 

 

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

[twsocket] TFtpClient - listing filenames

2016-07-21 Thread Ertan Küçükoğlu
Hi,

 

I am not quite sure as to what version of ICS I have. I read V8.23 somewhere in 
“svn-changelog-icsv8.txt” file, and TFtpClient.FtpClientID is “ICS FTP Client 
V8.09”.

 

In one of my projects I did use TIdFTP for downloading some files. Project is 
finished, and running now. Recently, it’s blocking operation type of working 
started to be a problem. I am checking TFtpClient samples as to how can I do 
the switch for non-blocking ftp downloads. So far I believe, I can use 
TFtpClient to download a file which I know its name and full URL.

 

Though;

1-  I do need some help to list files in the FTP server I am connecting. I 
want to use LocalStream (Please see below) 

2-  It’s maybe me, but I couldn’t find any sample as to listing of files in 
a directory using wildcards and excluding directories  (or somehow identifying 
them). Currently, I do not know if I can or how to pass this wildcard to the 
file listing in order to get only the relevant files listed.

 

My current code is:

procedure TForm10.FtpClient1RequestDone(Sender: TObject; RqType: TFtpRequest;

  ErrCode: Word);

var

  TempString: string;

begin

  Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' On 
request:' + IntToStr(Ord(RqType)));

 

  if ErrCode <> 0 then

  begin

Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' *** 
ERROR: ' + FtpClient1.ErrorMessage);

if RqType <> ftpOpenAsync then FtpClient1.QuitAsync;

Exit();

  end;

 

  case RqType of

ftpOpenAsync:FtpClient1.UserAsync();

ftpUserAsync:FtpClient1.PassAsync();

ftpPassAsync:FtpClient1.CwdAsync();

ftpCwdAsync:

begin

  FtpClient1.HostFileName  := EmptyStr;

  FtpClient1.LocalFileName := EmptyStr;

  FtpClient1.LocalStream := TMemoryStream.Create();

  FtpClient1.LsAsync();

end;

ftpLsAsync:

begin

//  FtpClient1.LocalStream.Position := 0;  // Using only these 3 lines also 
giving me similar result

//  SetLength(TempString, FtpClient1.LocalStream.Size);

//  CopyMemory(Pointer(TempString), 
TMemoryStream(FtpClient1.LocalStream).Memory, FtpClient1.LocalStream.Size);

  SetString(TempString, 
PChar(TMemoryStream(FtpClient1.LocalStream).Memory), 
FtpClient1.LocalStream.Size div SizeOf(Char));

  Memo1.Lines.Add('-');

 Memo1.Lines.Add(TempString);

  Memo1.Lines.Add('-');

  FtpClient1.TypeSetAsync();

end;

ftpTypeSetAsync:

begin

  FtpClient1.HostFileName  := 'abcdef.txt';

  FtpClient1.LocalFileName := edtLocalPath.Text + '\' + 
FtpClient1.HostFileName;

  FtpClient1.GetAsync;

end;

ftpGetAsync:

begin

  FStatus := FtpClient1.StatusCode = 226;

  FtpClient1.QuitAsync;

end;

ftpQuitAsync:if FStatus then Memo1.Lines.Add('File Download OK');

else

  Memo1.Lines.Add('Unknown RqType: ' + IntToStr(Ord(RqType)));

  end;

end;

 

 

Part of what I get in Memo is something like below:

= Beginning =

2016-06-22 04:12:01.784 On request:4

2016-06-22 04:12:01.787 > PASV

2016-06-22 04:12:01.938 < 227 Entering Passive Mode (5,229,203,64,227,54).

2016-06-22 04:12:01.953 > NLST

2016-06-22 04:12:02.188 < 150 Opening data connection for (N/A) (*hidden*).

2016-06-22 04:12:02.338 < 226 Closing data connection.  File: N/A

2016-06-22 04:12:02.340 ! 167bytes received/sent in 297 milliseconds

2016-06-22 04:12:02.342 On request:8

-

മ⸊മ匊偍〰㄰䈮义਍〲㔱〱਍䵓ぐ〰⸱千ൖ㈊㄰ㄵറ㈊㄰ㄵല㈊㠰㄰വ㈊㄰〶റ㈊㄰〶ല㈊㠰㄰ശ匊ㅋ⹁千ൖ㈊㄰〶ള㈊㄰〶ഴ匊偍〰㈰䈮义਍䵓ぐ〰⸲千ൖ匊㉋⹁千ൖ㈊㄰〶വ㈊㄰〶ശ

-

2016-06-22 04:12:02.361 > TYPE I

2016-06-22 04:12:02.455 < 200 Command okay.

= END =

 

 

Thanks.

 

Regards,

Ertan Küçükoğlu

 

 

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

[twsocket] TFtpClient - listing filenames in stream

2016-07-21 Thread Ertan Küçükoğlu
Hi,

 

I am not quite sure as to what version of ICS I have. I read V8.23 somewhere in 
“svn-changelog-icsv8.txt” file, and TFtpClient.FtpClientID is “ICS FTP Client 
V8.09”.

 

In one of my projects I did use TIdFTP for downloading some files. Project is 
finished, and running now. Recently, it’s blocking operation type of working 
started to be a poblem. I am checking TFtpClient samples as to how can I do the 
switch for non-blocking ftp downloads. So far I believe, I can use TFtpClient 
to download a file which I know it’s name and full URL.

 

Though;

1-  I do need some help to list files in the FTP server I am connecting. I 
want to use LocalStream (Please see below) 

2-  It’s maybe me, but I couldn’t find any sample as to listing of files in 
a directory using wildcards and excluding directories  (or some how identifying 
them). Currently, I do not know if I can or how to pass this wildcard to the 
file listing in order to get only the relevant files listed.

 

My current code is:

procedure TForm10.FtpClient1RequestDone(Sender: TObject; RqType: TFtpRequest;

  ErrCode: Word);

var

  TempString: string;

begin

  Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' On 
request:' + IntToStr(Ord(RqType)));

 

  if ErrCode <> 0 then

  begin

Memo1.Lines.Add(FormatDateTime('-mm-dd hh:nn:ss.zzz', now) + ' *** 
ERROR: ' + FtpClient1.ErrorMessage);

if RqType <> ftpOpenAsync then FtpClient1.QuitAsync;

Exit();

  end;

 

  case RqType of

ftpOpenAsync:FtpClient1.UserAsync();

ftpUserAsync:FtpClient1.PassAsync();

ftpPassAsync:FtpClient1.CwdAsync();

ftpCwdAsync:

begin

  FtpClient1.HostFileName  := EmptyStr;

  FtpClient1.LocalFileName := EmptyStr;

  FtpClient1.LocalStream := TMemoryStream.Create();

  FtpClient1.LsAsync();

end;

ftpLsAsync:

begin

//  FtpClient1.LocalStream.Position := 0;  // Using only these 3 lines also 
giving me similar result

//  SetLength(TempString, FtpClient1.LocalStream.Size);

//  CopyMemory(Pointer(TempString), 
TMemoryStream(FtpClient1.LocalStream).Memory, FtpClient1.LocalStream.Size);

  SetString(TempString, 
PChar(TMemoryStream(FtpClient1.LocalStream).Memory), 
FtpClient1.LocalStream.Size div SizeOf(Char));

  Memo1.Lines.Add('-');

 Memo1.Lines.Add(TempString);

  Memo1.Lines.Add('-');

  FtpClient1.TypeSetAsync();

end;

ftpTypeSetAsync:

begin

  FtpClient1.HostFileName  := 'abcdef.txt';

  FtpClient1.LocalFileName := edtLocalPath.Text + '\' + 
FtpClient1.HostFileName;

  FtpClient1.GetAsync;

end;

ftpGetAsync:

begin

  FStatus := FtpClient1.StatusCode = 226;

  FtpClient1.QuitAsync;

end;

ftpQuitAsync:if FStatus then Memo1.Lines.Add('File Download OK');

else

  Memo1.Lines.Add('Unknown RqType: ' + IntToStr(Ord(RqType)));

  end;

end;

 

 

Part of what I get in Memo is something like below:

= Beginning =

2016-06-22 04:12:01.784 On request:4

2016-06-22 04:12:01.787 > PASV

2016-06-22 04:12:01.938 < 227 Entering Passive Mode (5,229,203,64,227,54).

2016-06-22 04:12:01.953 > NLST

2016-06-22 04:12:02.188 < 150 Opening data connection for (N/A) (*hidden*).

2016-06-22 04:12:02.338 < 226 Closing data connection.  File: N/A

2016-06-22 04:12:02.340 ! 167bytes received/sent in 297 milliseconds

2016-06-22 04:12:02.342 On request:8

-

മ⸊മ匊偍〰㄰䈮义਍〲㔱〱਍䵓ぐ〰⸱千ൖ㈊㄰ㄵറ㈊㄰ㄵല㈊㠰㄰വ㈊㄰〶റ㈊㄰〶ല㈊㠰㄰ശ匊ㅋ⹁千ൖ㈊㄰〶ള㈊㄰〶ഴ匊偍〰㈰䈮义਍䵓ぐ〰⸲千ൖ匊㉋⹁千ൖ㈊㄰〶വ㈊㄰〶ശ

-

2016-06-22 04:12:02.361 > TYPE I

2016-06-22 04:12:02.455 < 200 Command okay.

= END =

 

 

Thanks.

 

Regards,

Ertan Küçükoğlu

 

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be