Delphi Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

SFTP Download Files Matching a Pattern

Demonstrates how to download the files in a remote SFTP directory matching a file pattern. The example opens a directory, iterates over the files, and downloads each file matching a file pattern, such as "*.xml".

Download Chilkat 32-bit SSH / SFTP ActiveX (.msi)

Download All 32-bit Chilkat ActiveX Components (.zip)

Download All 64-bit Chilkat ActiveX Components (.zip)

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATSSHLib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
sftp: TChilkatSFtp;
success: Integer;
port: Integer;
hostname: String;
handle: String;
dirPath: String;
dirListing: IChilkatSFtpDir;
i: Integer;
n: Integer;
fileObj: IChilkatSFtpFile;
remoteFilePath: String;
localFilePath: String;

begin
//  Important: It is helpful to send the contents of the
//  sftp.LastErrorText property when requesting support.

sftp := TChilkatSFtp.Create(Self);

//  Any string automatically begins a fully-functional 30-day trial.
success := sftp.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  Set some timeouts, in milliseconds:
sftp.ConnectTimeoutMs := 5000;
sftp.IdleTimeoutMs := 10000;

//  Connect to the SSH server.
//  The standard SSH port = 22
//  The hostname may be a hostname or IP address.

hostname := 'www.my-sftp-server.com';
port := 22;
success := sftp.Connect(hostname,port);
if (success <> 1) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  Authenticate with the SSH server.  Chilkat SFTP supports
//  both password-based authenication as well as public-key
//  authentication.  This example uses password authenication.
success := sftp.AuthenticatePw('myLogin','myPassword');
if (success <> 1) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  After authenticating, the SFTP subsystem must be initialized:
success := sftp.InitializeSftp();
if (success <> 1) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  Open a directory on the server...
//  Paths starting with a slash are "absolute", and are relative
//  to the root of the file system. Names starting with any other
//  character are relative to the user's default directory (home directory).
//  A path component of ".." refers to the parent directory,
//  and "." refers to the current directory.

dirPath := 'abc123';
handle := sftp.OpenDir(dirPath);
if (Length(handle) = 0 ) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  Download the directory listing:

dirListing := sftp.ReadDir(handle);
if (dirListing = nil ) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

//  Iterate over the files.

n := dirListing.NumFilesAndDirs;
if (n = 0) then
  begin
    Memo1.Lines.Add('No entries found in this directory.');
  end
else
  begin
    for i := 0 to n - 1 do
      begin

        fileObj := dirListing.GetFileObject(i);

        Memo1.Lines.Add(fileObj.Filename);

        //  Does this filename match the desired pattern?
        //  Write code here to determine if it's a match or not.

        //  Assuming it's a match, you would download the file
        //  like this:

        remoteFilePath := dirPath + '/';
        remoteFilePath := remoteFilePath + fileObj.Filename;
        localFilePath := fileObj.Filename;
        success := sftp.DownloadFileByName(remoteFilePath,localFilePath);
        if (success <> 1) then
          begin
            ShowMessage(sftp.LastErrorText);
            Exit;
          end;

      end;

  end;

//  Close the directory
success := sftp.CloseHandle(handle);
if (success <> 1) then
  begin
    ShowMessage(sftp.LastErrorText);
    Exit;
  end;

ShowMessage('Success.');
end;

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser