Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Delete Local Files that Do Not Exist on the FTP ServerDemonstrates how to get a list of local files in a directory tree that do not exist on the FTP server.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var ftp: TChilkatFtp2; success: Integer; mode: Integer; descendTree: Integer; previewOnly: Integer; sa: TCkStringArray; fac: TCkFileAccess; numFiles: Integer; i: Integer; localFilePath: WideString; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. ftp := TChilkatFtp2.Create(Self); ftp.Hostname := 'ftp.example.com'; ftp.Username := 'login'; ftp.Password := 'password'; ftp.KeepSessionLog := 1; // Connect and login to the FTP server. success := ftp.Connect(); if (success <> 1) then begin Memo1.Lines.Add(ftp.LastErrorText); Exit; end; // Set the current remote directory to the root of // the remote tree to be compared. success := ftp.ChangeRemoteDir('abc123'); if (success <> 1) then begin Memo1.Lines.Add(ftp.LastErrorText); Exit; end; // Recursively descend the local directory tree // and find the files that exist locally but not remotely. // These are the files what would be uploaded via // the SyncRemoteTree method call with mode = 1. // (Mode 1 would upload all files that do not exist on the FTP server.) // The actual uploading is avoided by setting the preview-only argument to 1. mode := 1; descendTree := 1; previewOnly := 1; success := ftp.SyncRemoteTree2('/temp/abc123',mode,descendTree,previewOnly); if (success <> 1) then begin Memo1.Lines.Add(ftp.LastErrorText); Exit; end; // The files what would've been uploaded are now available in the SyncPreview property, // which contains a list of local file paths, one per line. // A program can iterate over them like this: sa := TCkStringArray.Create(Self); sa.LoadFromText(ftp.SyncPreview); fac := TCkFileAccess.Create(Self); numFiles := sa.Count; i := 0; while (i < numFiles) do begin localFilePath := sa.GetString(i); Memo1.Lines.Add(localFilePath); // An application can delete the file using Chilkat's file access object, // or it can choose to use the native file API available in the programming language: success := fac.FileDelete(localFilePath); if (success <> 1) then begin Memo1.Lines.Add('Failed to delete: ' + localFilePath); end; i := i + 1; end; success := ftp.Disconnect(); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.