Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 15:31   #1
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию Отправка файлов

Вобщем делаю программу для отсылки файлов...Программу пишу в Delphi 2007 т.к. другой версии нет...

Код:
procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
    s1:TStringList;
    s,n,e,u:string;
begin
f:=Tstringlist.Create;
f.LoadFromFile(extractfilepath(paramstr(0))+'\set.set');
IdSMTP1.Host:=f.Strings[0];
IdSMTP1.Username:=f.Strings[1];
IdSMTP1.Password:=f.Strings[2];
m:=tidmessage.Create(Form1);
m.From.Text:=f.Strings[3];
m.Subject:=f.Strings[4];
m.IsEncoded:=true;
m.Recipients.Add;
f.Free;

s1:=Tstringlist.Create;
s1.LoadFromFile(extractfilepath(paramstr(0))+'\data.set');
progressbar1.Max:=s1.Count;
for i:=1 to s1.Count do begin
    s:=s1.Strings[i-1];
    e:=''; d:=''; u:='';
    for j:=1 to length(s) do begin
        if s[j]<>';' then
           n:=n+s[j]
        else
          break;
    end;
    inc(j);
    for j:=j to length(s) do begin
        if s[j]<>';' then
           d:=d+s[j]
        else
          break;
    end;
    inc(j);
    for j:=j to length(s) do begin
        if s[j]<>';' then
           e:=e+s[j]
        else
          break;
    end;
    inc(j);
    for j:=j to length(s) do begin
        if s[j]<>';' then
           u:=u+s[j]
        else
          break;
    end;
    m.Recipients.EMailAddresses:=e;
    m.Body.Text:='Оценки ученика '+u;

    if Not IdSMTP1.Connected then begin
       st:=TSendThread.Create(true);
       st.Resume;
       st.Priority:=tpLower;
    end;

    if sn=true then
      progressbar1.Position:=progressbar1.Position+1;
end;
f.Free;
end;
Это часть программы в которой у меня проблема... Здесь каждому человеку отправляется назначенный ему файл на почту. сама отправка у меня в потоке
Код:
unit TSendThreadUnit;

interface

uses
  Classes, SysUtils, IdMessage, IdAttachment;

type
  TSendThread = class(TThread)
  private
    ATT:TIdAttachment;
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation

uses Main;

{ TSendThread }

procedure TSendThread.Execute;
begin
ATT:=TidAttachment.Create(m.MessageParts);
ATT.FileName:=main.d;
try
  form1.IdSMTP1.Connect;
  if form1.IdSMTP1.Connected then begin
     form1.IdSMTP1.send(main.m);
     main.sn:=true;
  end
  else
     main.sn:=false;
finally
form1.IdSMTP1.Disconnect;
end;
  { Place thread code here }
end;

end.
По событию Button4.click(первый код) вылазиет ошибка

Как её исправить?
Progs1024 вне форума Ответить с цитированием
Старый 25.11.2009, 16:36   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
finally
form1.IdSMTP1.Disconnect;
end;
Разъединяйтесь явно. finally выполняется независимо от того что произойдет в блоке try.
Допустим в блоке try первый оператор
Код:
form1.IdSMTP1.Connect;
сгенерировал исключение тогда будет вызвана finally. Но вданном случае исключение как раз означает, что соединение не выполнено. Поэтому Делфи и возмущается - Друг, я не могу разъединить, то что не соединено!
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка файлов по локальной сети dani92 Работа с сетью в Delphi 5 08.06.2021 20:31
Отправка файлов по e-mail mustang007 Работа с сетью в Delphi 17 20.11.2011 15:28
Отправка файлов из списка на FTP GvR Работа с сетью в Delphi 19 19.04.2010 17:43
Отправка файлов из подкаталогов на ФТП -=L.Morgan=- Работа с сетью в Delphi 3 30.10.2009 16:17
Отправка файлов по HTTP протоколу с помощью MFC Руслантус Общие вопросы C/C++ 0 27.05.2009 19:54