При выполнение условия и переходе на функцию появляется исключение:
function TestFile():string;
begin
//Если MD5 одинаковые удаляем файлы с сервера, иначе перекачиваем
if lmd5 = smd5 then // все хорошо lmd5 (32606462727512E8748149D3249F8200) == smd5 (32606462727512E8748149D3249F8200)
DelSUpdateFiles() // исключение
else
GetUpdateFiles();
end;
Если закоментировать условие if.. then.. else.. то исключение не вылазит и DelSUpdateFiles() выполняется. В чем может быть проблема?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Здравствуйте, hibloy, Вы писали:
H>При выполнение условия и переходе на функцию появляется исключение:
H>H>function TestFile():string;
H>begin
H> //Если MD5 одинаковые удаляем файлы с сервера, иначе перекачиваем
H> if lmd5 = smd5 then // все хорошо lmd5 (32606462727512E8748149D3249F8200) == smd5 (32606462727512E8748149D3249F8200)
H> DelSUpdateFiles() // исключение
H> else
H> GetUpdateFiles();
H>end;
H>
H>Если закоментировать условие if.. then.. else.. то исключение не вылазит и DelSUpdateFiles() выполняется. В чем может быть проблема?
Как определены lmd5 и smd5?
И покажите код функции DelSUpdateFiles()
Здравствуйте, BlackEric, Вы писали:
BE>Здравствуйте, hibloy, Вы писали:
H>>При выполнение условия и переходе на функцию появляется исключение:
H>>H>>function TestFile():string;
H>>begin
H>> //Если MD5 одинаковые удаляем файлы с сервера, иначе перекачиваем
H>> if lmd5 = smd5 then // все хорошо lmd5 (32606462727512E8748149D3249F8200) == smd5 (32606462727512E8748149D3249F8200)
H>> DelSUpdateFiles() // исключение
H>> else
H>> GetUpdateFiles();
H>>end;
H>>
H>>Если закоментировать условие if.. then.. else.. то исключение не вылазит и DelSUpdateFiles() выполняется. В чем может быть проблема?
BE>Как определены lmd5 и smd5?
BE>И покажите код функции DelSUpdateFiles()
DelSUpdateFiles:
function DelSUpdateFiles():string;
var
ftp1: TIdFTP;
begin
ftp1 := TIdFTP.Create(ftp1); // если вываливается то здесь, но повторю если убрать условие все гуд.
ftp1.UserName := updlogin;
ftp1.Password := updpassw;
ftp1.Host := updserver;
try
ftp1.Connect(true,30000);
except
end;
if ftp1.Connected then
begin
ftp1.Delete('upd.md5'); // oaaeeou oaee n na?aa?a
ftp1.Delete('upd.7z'); // oaaeeou oaee n na?aa?a
ftp1.Disconnect;
end;
ftp1.Destroy;
end;
InFile := TFileStream.Create(localpath + 'temp\' + 'upd.7z', fmShareDenyNone);
smd5 := MD5DigestToStr(MD5Stream(INFILE)); // читаем файл, считаем md5
FileStream := TFileStream.Create(localpath + 'temp\' + 'upd.md5', fmOpenRead);
Reader := TReader.Create(FileStream, $FF);
Reader.ReadListBegin;
lmd5 := Reader.ReadString; // читаем из файла правельный MD5
Reader.ReadListEnd;
Reader.Destroy;
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Здравствуйте, hibloy, Вы писали:
h> DelSUpdateFiles:
h> h> function DelSUpdateFiles():string;
h> var
h> ftp1: TIdFTP;
h> begin
h> ftp1 := TIdFTP.Create(ftp1); // если вываливается то здесь, но повторю если убрать условие все гуд.
h> ftp1.UserName := updlogin;
h> ftp1.Password := updpassw;
h> ftp1.Host := updserver;
h> try
h> ftp1.Connect(true,30000);
h> except
h> end;
h> if ftp1.Connected then
h> begin
h> ftp1.Delete('upd.md5'); // oaaeeou oaee n na?aa?a
h> ftp1.Delete('upd.7z'); // oaaeeou oaee n na?aa?a
h> ftp1.Disconnect;
h> end;
h> ftp1.Destroy;
h> end;
h>
Кто же в качестве owner'а передает неинициализированную переменную. Итак:
1. TIdFTP.Create(ftp1) поменять на TIdFTP.Create(NIL)
2. Освобождение объекта ftp1 делать в finally-блоке
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, hibloy, Вы писали:
h>> DelSUpdateFiles:
h>> h>> function DelSUpdateFiles():string;
h>> var
h>> ftp1: TIdFTP;
h>> begin
h>> ftp1 := TIdFTP.Create(ftp1); // если вываливается то здесь, но повторю если убрать условие все гуд.
h>> ftp1.UserName := updlogin;
h>> ftp1.Password := updpassw;
h>> ftp1.Host := updserver;
h>> try
h>> ftp1.Connect(true,30000);
h>> except
h>> end;
h>> if ftp1.Connected then
h>> begin
h>> ftp1.Delete('upd.md5'); // oaaeeou oaee n na?aa?a
h>> ftp1.Delete('upd.7z'); // oaaeeou oaee n na?aa?a
h>> ftp1.Disconnect;
h>> end;
h>> ftp1.Destroy;
h>> end;
h>>
H>Кто же в качестве owner'а передает неинициализированную переменную. Итак:
H>1. TIdFTP.Create(ftp1) поменять на TIdFTP.Create(NIL)
H>2. Освобождение объекта ftp1 делать в finally-блоке
Спасибо. Все гуд.=) Привычька создавать объекты от Net)))