Smartere måde at gøre dette på
Jeg har et lille program der finder filer fra et directory på min disk og smider dem op på en FTP server.Jeg looper directoriet + subdirs og smider filnavnene i en listbox (visualisering)
Jeg bruger så nedenstående til at uploade filerne. Men er meget i tvivl om der findes en smartere metode.
(Alle mapperne på FTP serveren er oprettet i en anden funktion og det vireker)
procedure TfrmMain.FTP_Upload;
var
intX : integer;
FTPpath : string;
FTPfile : string;
begin
try
For intX := 0 To lbFiles.Count - 1 Do
begin
Panel_Update(1, 'Uploader fil ' + IntToStr(intX + 1) + ' af ' + IntToStr(lbFiles.Count) + ' filer.');
Try
barProgress.Position := 0;
FTPpath := ExtractFilePath(lbFiles.Items[intX]);
Delete(FTPpath, 1, Length(Settings.FTP_LocalDir));
if FTPpath = '' Then
FTPpath := '//';
FTPpath := Trim(stringReplace(FTPpath, '\', '/', [rfReplaceAll, rfIgnoreCase]));
if RightStr(FTPpath, 1) = '/' then
begin
FTPpath := LeftStr(FTPpath, Length(FTPpath) - 1);
end;
if (FTPpath <> Settings.FTP_HostDir) And (FTPpath <> '/') then
idFTP.ChangeDir(FTPpath)
else
idFTP.ChangeDir('/' + Settings.FTP_HostDir);
Logfile.Event('FTP upload', 'Skift mappe', '# ' + FTPpath + ' #');
barProgress.Max := FileSize(lbFiles.Items[intX]);
FTPfile := Trim(ExtractFileName(lbFiles.Items[intX]));
idFTP.Put(lbFiles.Items[intX], FTPfile);
Logfile.Event('FTP upload', 'Put file', '# ' + FTPfile + ' #');
idFTP.ChangeDir('/' + Settings.FTP_HostDir);
Except
Logfile.Error('Fejl under upload af fil: ' + lbFiles.Items[intX] + ' til: ' + '# ' + FTPpath + FTPfile + ' #');
end;
Application.ProcessMessages;
end;
finally
Panel_Reset;
end;
end;
