[Delphi 7] Исключение при обработке условия
От: hibloy  
Дата: 07.03.11 14:18
Оценка:
При выполнение условия и переходе на функцию появляется исключение:

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>>
Re: [Delphi 7] Исключение при обработке условия
От: BlackEric http://black-eric.lj.ru
Дата: 07.03.11 15:05
Оценка:
Здравствуйте, 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()
https://github.com/BlackEric001
Re[2]: [Delphi 7] Исключение при обработке условия
От: hibloy  
Дата: 07.03.11 15:14
Оценка:
Здравствуйте, 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>>
Re[3]: [Delphi 7] Исключение при обработке условия
От: hattab  
Дата: 07.03.11 17:31
Оценка: 1 (1)
Здравствуйте, 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-блоке
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[4]: [Delphi 7] Исключение при обработке условия
От: hibloy  
Дата: 08.03.11 05:13
Оценка:
Здравствуйте, 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)))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.