Консультация № 141741
19.08.2008, 15:51
0.00 руб.
0 2 1
Использую Delphi 7 и стандартный Indy 9.
Отправляю почту через TIdSMTP, отправка проходит нормально, но возникла необходимость прерывать передачу данных по желанию пользователя и закрыть форму.
Если просто сделать Disconnect, во время выполнения передачи сообщения, то передача всеравно еще некоторое время продолжается, и в результате при закрытии формы вылетает Access Violation.
Перепробовал все что только мог, никак не могу выйти из этой ситуации...

Обсуждение

Неизвестный
19.08.2008, 16:16
общий
это ответ
Здравствуйте, Gercogoge!
Попробуйте добавить на форму компронент idAntiFrizee.
Неизвестный
25.08.2008, 07:17
общий
Проблемка..... ~ я обычно заводил отдельную (не компонент) переменную и пользовал её, заканчивая всё как-то так:
Код:

try
XXX.Socket.Close;
except
end;
try
XXX.DisconnectClose;
except
end;
try
FreeAndNil(XXX);
except
end;


И в таком духе. Насколько я прослеживал, память при этом не утекала, то есть, не смотря на грубость и кривоватость этого способа, он имеет право быть.


А может, лучше Indy10? Там и процедура объявлена как надо... procedure TIdSMTP.Disconnect(AImmediate: Boolean); Я когда перешёл с 9-ки на 10-ку - там много "вкусностей" нашёл, всё как-то стабильнее и логичнее стало работать...
Форма ответа