Le vieux TNMFTP ?
C'était celui avec D4, je l'ai utilisé plusieurs fois, plusieurs contexte, vers un FTP chez Magic, vers un FTP sur un AS400 (j'utilisais même DoCommand pour invoquer un script PRL via "rcmd CALL PGM(...)")
Est-ce que D3 l'avait ?
C'est juste un Client
En vrac, du vieux code de 2002
1 2 3 4 5 6 7 8 9 10 11
| // Création du Client FTP
FTP := TNMFTP.Create(Application);
FTP.Host := ReadStringIni('IMPORT', 'FTP_Host', '') ;
FTP.Port := StrToInt(ReadStringIni('IMPORT', 'FTP_Port', '0')) ;
FTP.TimeOut := StrToInt(ReadStringIni('IMPORT', 'FTP_TimeOut', '0')) ;
FTP.UserID := ReadStringIni('IMPORT', 'FTP_User', '') ;
FTP.Password := ReadStringIni('IMPORT', 'FTP_Password', '') ;
// Les Evenenemts
FTP.OnListItem := NMFTPListItemEventHandler;
FTP.OnSuccess := NMFTPSuccessEventHandler;
FTP.OnFailure := NMFTPFailureEventHandler; |
dans une classe héritée de TThread, oui le FTP était en fond de tache, aussi bien import qu'export faisant l'intermédiaire entre un AS400 et un Robot
FTPImportThread.FTP.Connect();
1 2 3 4 5 6
|
if FTPImportThread.FTP.CurrentDir <> CommandeLib then begin
FTPImportThread.FTP.ChangeDir(CommandeLib);
// On veut changer le dossier, est-ce que cela a fonctionné ?
if FTPImportThread.FTP.CurrentDir <> CommandeLib then begin
... |
S'assurer que l'on est bien de la bon répertoire, ChangeDir ne provoquait pas d'erreur en cas d'échec, pas pratique
1 2 3 4 5 6 7 8 9 10 11
|
TPImportThread.FTP.Nlist();
// Parcours de la Liste de Fichier
for i := 0 to FTPImportThread.FileList.Count - 1 do begin
// Comparaison du nom du fichier
if CompareMaskString(Trim(FTPImportThread.FileList.Strings[i]), MaskFileName) then begin
LocalFileName := gCurrentLocalImport + Trim(FTPImportThread.FileList.Strings[i]);
FrmServeur.StatusBarServeur.Panels[SB_PANEL_IMPORT].Text := 'Import FTP : Reception en Cours, Veuillez patientez ...';
try
FTPImportThread.FTP.Download(FTPImportThread.FileList.Strings[i], LocalFileName);
... |
Aujourd'hui avec Indy, j'utilise plutôt un TStream que le mode fichier,
si le fichier est petit genre moins de 64Ko (et encore même 1Mo c'est petit de nos jours), je passe par un TMemoryStream, et sinon un TFileStream dans un dossier temporaire de la session Windows
Partager