Так что я привязываюсь к использованию компонента idFTP перед созданием любой формы. Я вызываю функцию, которая должна проверять файл на ftp-сервере, поэтому мне нужно его создать.Использование idFTP перед созданием формы
Вот функция:
function restoreBackup(online: Boolean = TRUE): Boolean; //restores backup from server if possible, if not from disk
var
FTP: TidFTP;
begin
if online then
begin
FTP:=FTP.Create();
FTP.Host:=getConfig('ftphost');
FTP.Username:=getConfig('ftpuser');
FTP.Port:=StrToInt(getConfig('ftpport'));
FTP.Password:=getConfig('ftppass');
try
FTP.Connect;
FTP.ChangeDir(getConfig('ftpbkpdir'));
if FTP.Size('masterlist.dat')<>-1 then
begin
FTP.Get('masterlist.dat', getConfig('masterlistpath'));
end;
except
MessageDlg('Impossible de se connecter au serveur, la sauvegarde sera restaurée à partir du disque.', mtError, [mbOK], 0);
end;
end;
//restore from disk
FTP.Free;
end;
Она вызывается из источника проекта:
var
Sel: Integer;
begin
Application.Initialize;
global.initGlobal;
if not global.verifyPaths then //verify if all paths are good
begin
Sel:=MessageDlg('Un des chemins d''accès est erroné. L''application peut restaurer la dernière sauvegarde mais il se peut que certaines informations soient perdues. Voulez-vous continuer?',
mtError, [mbYes,mbNo], 0);
if Sel=6 then //6 is mrYes
begin
io.restoreBackup(); //// It gets called here.
end else
begin
Application.Terminate;
end;
end else
begin
//Create Forms
Application.Run;
end;
end.
Когда функция вызывается, я получаю нарушение прав доступа. Я уверен, что не создаю его правильно, но я не знаю, как заставить его работать.
строка 'FTP: = FTP.Create();' 'должно быть FTP: = TidFTP.Create (ноль);'. Также помните, чтобы защитить ресурсы, используя блок «try finally». – RRUZ
Хорошо, спасибо! Вы можете опубликовать это как ответ, и я соглашусь с ним. – Gab