С переходом на новую версию библиотеки Indy 10, разработчикам, использующим этот популярный инструментарий для работы с сетью в среде Delphi и Pascal, необходимо обновить свои проекты. В данной статье мы рассмотрим изменения, которые нужно внести в код, чтобы адаптировать его под Indy 10.
Изменения в Indy
Среди наиболее значимых изменений в Indy 10 — это перемещение свойства StoredPathName из класса TIdMessagePart в класс TIdAttachmentFile. Это означает, что для получения доступа к этому свойству необходимо сначала убедиться, что текущий элемент части сообщения является экземпляром TIdAttachmentFile.
Пример переработанного кода
Вот пример обновленного кода, который учитывает изменения в Indy 10:
vlist: TStringList;
...
for j := numEmails downto 1 do
begin
Msg.Clear;
Retrieve(j, Msg);
...
for k := 0 to Msg.MessageParts.Count - 1 do
if Msg.MessageParts[k] is TIdAttachmentFile then
with TIdAttachmentFile(Msg.MessageParts[k]) do
begin
// Получение имени файла, который был отправлен.
aname := FileName;
...
if SameText(aname, ExtractFilename(PacketFilename))
and FileExists(LongFilename(DestinationPath)) then
begin
// Чтение вложения и выполнение обратного вызова, если он определен.
vlist.LoadFromFile(LongFilename(DestinationPath));
...
end;
end;
...
end;
...
Disconnect;
...
except
on E: Exception do
result := E.Message;
end;
Обратите внимание на изменение в цикле with. Теперь мы сначала проверяем, является ли элемент частью сообщения экземпляром TIdAttachmentFile, и только после этого выполняем операцию с приведением типа. Также стоит заменить StoredPathName на актуальный путь сохранения файлов, например, DestinationPath.
Изменения в методе Connect
В Indy 9 параметр метода Connect() представлял собой время ожидания установления соединения (ConnectTimeout). В Indy 10 этот параметр был вынесен в отдельное свойство. Если ранее использовался метод Connect(9000), то теперь следует вызвать просто Connect(), не передавая параметров.
Заключение
Переход на Indy 10 требует внимательного изучения изменений, внесенных в библиотеку. В данной статье мы рассмотрели основные моменты, которые необходимо учесть при обновлении кода: перемещение свойства StoredPathName и изменения в методе Connect. Следуя этим рекомендациям, вы сможете без проблем адаптировать ваш проект под новую версию Indy.
Обновление кода под новый выпуск библиотеки Indy 10 для использования в среде Delphi и Pascal.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS