Bonjour svp j’arrive pas à lire un fichier txt en utilisant FTP, je sais qu’on peut le faire facilement avec Delphi 7 mais avec Delphi 3 client serveur je trouve des difficultés svp aidez moi merci
Version imprimable
Bonjour svp j’arrive pas à lire un fichier txt en utilisant FTP, je sais qu’on peut le faire facilement avec Delphi 7 mais avec Delphi 3 client serveur je trouve des difficultés svp aidez moi merci
Une bonne raison d'utiliser une version de Delphi qui a plus de 20 ans?
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
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 RobotCode:
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;
Code:FTPImportThread.FTP.Connect();
S'assurer que l'on est bien de la bon répertoire, ChangeDir ne provoquait pas d'erreur en cas d'échec, pas pratiqueCode:
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 ...
Aujourd'hui avec Indy, j'utilise plutôt un TStream que le mode fichier,Code:
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); ...
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