Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

ConnectFailReason

See more FTP Examples

The ConnectFailReason property can be examined to determine the reason why the Connect method failed. The possible values are listed in the source code below:

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Ftp2;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  ftp: TFtp2;
  failReason: Integer;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  ftp := TFtp2.Create;

  ftp.Hostname := 'ftp.example.com';
  ftp.Username := 'login';
  ftp.Password := 'password';

  //  Connect and login to the FTP server.
  success := ftp.Connect();
  if (success <> True) then
    begin

      //  The possible failure reasons are:
      //  0 = success
      //  
      //  Normal (non-TLS) sockets:
      //  1 = empty hostname
      //  2 = DNS lookup failed
      //  3 = DNS timeout
      //  4 = Aborted by application.
      //  5 = Internal failure.
      //  6 = Connect Timed Out
      //  7 = Connect Rejected (or failed for some other reason)
      //  
      //  SSL/TLS:
      //  100 = TLS internal error.
      //  101 = Failed to send client hello.
      //  102 = Unexpected handshake message.
      //  103 = Failed to read server hello.
      //  104 = No server certificate.
      //  105 = Unexpected TLS protocol version.
      //  106 = Server certificate verify failed (the server certificate is expired or the cert's signature verification failed).
      //  107 = Unacceptable TLS protocol version.
      //  109 = Failed to read handshake messages.
      //  110 = Failed to send client certificate handshake message.
      //  111 = Failed to send client key exchange handshake message.
      //  112 = Client certificate's private key not accessible.
      //  113 = Failed to send client cert verify handshake message.
      //  114 = Failed to send change cipher spec handshake message.
      //  115 = Failed to send finished handshake message.
      //  116 = Server's Finished message is invalid.
      //  
      //  FTP:
      //  200 = Connected, but failed to receive greeting from FTP server.
      //  201 = Failed to do AUTH TLS or AUTH SSL.
      //  Protocol/Component:
      //  300 = asynch op in progress
      //  301 = login failure.

      failReason := ftp.ConnectFailReason;

      WriteLn('connect fail reason = ' + failReason);

      WriteLn(ftp.LastErrorText);
      Exit;
    end;

  //  ...


  ftp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.