Mam problem z "zawątkowaniem" mojego kodu. Proszę o pomoc (czyt. konkretny kod źródłowy, a nie wskazówki, które moge przeczytać w artykule. Z góry dziękuję za pomoc. PS. Czy da się tak zawątkować program, żeby łączył się z serwerem SMTP kilkoma sesjami na raz?
Kod do zawątkowania:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
x,i : integer;
idMessage : TIdMessage;
begin
{SPRAWDZANIE POPRAWNOŚCI}
x := 0;
if (host.Text = '') then
application.MessageBox('Nie podałeś nazwy hosta.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if (login.Text = '') then
application.MessageBox('Nie podałeś swojego loginu.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if (pass.Text = '') then
application.MessageBox('Nie podałeś swojego hasła.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if (od.Text = '') then
application.MessageBox('Nie podałeś adresu e-mail nadawcy listu.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if (dokogo.Text = '') then
application.MessageBox('Nie podałeś adresu e-mail odbiorcy listu.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if (temat.Text = '') then
application.MessageBox('Nie podałeś tematu listu.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if ile.Text = '' then
application.MessageBox('Nie podałeś ilości e-maili.','Uwaga',MB_Ok + MB_IconExclamation)
else if StrToInt(ile.Text) = 0 then
application.MessageBox('List nie zostanie wysłany.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
if timeout.Text = '' then
application.MessageBox('Nie podałeś opóźnienia.','Uwaga',MB_Ok + MB_IconExclamation)
else x := x + 1;
{KONIEC SPRAWDZANIA}
if x = 8 then
begin
idMessage := TIdMessage.Create(self);
idMessage.Body.Assign(mail.Lines);
idMessage.From.Text := od.Text;
idMessage.Recipients.EMailAddresses := od.Text;
idMessage.ccList.EMailAddresses := '';
idMessage.BccList.EMailAddresses := '';
idMessage.Subject := temat.Text;
idsmtp1.Host := host.Text;
idsmtp1.Port := 25;
idsmtp1.Username := login.Text;
idsmtp1.Password := pass.Text;
p.MaxValue := StrToInt(ile.Text);
stat.SimpleText := '';
idsmtp1.Connect;
idsmtp1.AuthenticationType := atLogin;
idsmtp1.Authenticate;
i := 0;
p.Progress := 0;
while i < StrToInt(ile.Text) do
begin
idsmtp1.Send(idMessage);
p.Progress := p.Progress + 1;
sleep(StrToInt(timeout.Text));
i := i + 1;
end;
idsmtp1.AuthenticationType := atNone;
idsmtp1.Disconnect;
idMessage.Free;
end
else
stat.SimpleText := ' (> Nie wysłano wiadomości.';
end;