Indy wyjątki w wątku POP3

0

Witam Wszystkich już jakiś czas próbuje i próbuje i nic mi z tego nie wychodzi mianowicie dążę do tego żeby wyłapać wyjątek w indy 10 O niepoprawnym połaczeniu "invalid userrname/password' w** wątku** i wyświetlić go na Form1 w Labelu zamiast wyrzucania mi błedu na cały ekran.Dodam że niesprawdza się to tylko kiedy program działa w wątku i ma za zadanie łączyć sie do pop3 poprzez login i hasło wpisane w >memo1 i memo2 i jest to pętla

for to do 

a tu troche kodu

 TSprawdz = class(TThread)
 protected
   procedure Execute; override;
 end;  

A tu Execute

procedure TSprawdz.Execute;
var
  ilosc:integer;
   i:integer;
begin
  FreeOnTerminate := True; // zakoncz watek po zaknczeniu tej procedury
Form1.listbox1.clear;
Form1.listbox2.clear;
Form1.listbox3.Clear;
ilosc:=Form1.Memo1.Lines.Count;

    for i:=0 to ilosc do
     begin
       try

       Form1.IdPOP3.Host:='pop3.o2.pl';     // host pop3
       Form1.IdPOP3.Username:=Form1.Memo1.Lines[i];//username
       Form1.Label2.Caption:=Form1.Memo1.Lines[i];  //Aktualnie przetwarzany
       Form1.IdPOP3.Password:=Form1.Memo2.Lines[i]; //haslo

           Form1.IdPOP3.connect;    //polacz
     if Form1.IdPop3.Connected=true then
Form1.Listbox1.Items.Add(Form1.Memo1.Lines[i]);  //Jesli polaczono dodaje items w Listboxie

except     //jesli wystapi blad       dodaje Items w Lisboxie
Form1.Listbox3.Items.Add(Form1.Memo1.Lines[i]);
begin
Form1.IdPOP3.Disconnect;
Form1.Listbox2.Items.Add(Form1.Memo1.Lines[i]); //dodaje items w listboxie ze przetworzylo
end;
    end;
end;
     end;

No i odpalam poprzez

TSprawdz.Create(False); 
0

Nie rozumiesz wątków.

http://wiki.freepascal.org/Multithreaded_Application_Tutorial łap przyda Ci się.

0

Co w tym niby nie rozumiem?? Zapytałem jak wyłapac wyjątek w wątku z compomentem indy 10

0

Zapytałem jak wyłapac wyjątek w wątku z compomentem indy 10

Wątki jak ogarniasz, tak ogarniasz, ale odpowiedź na pytanie jest prosta - poczytaj o wyjątkach; Niby jest blok try .. except, ale w ogóle nie rozróżniasz wyjątków, więc jakikolwiek by nie zaistniał to i tak wykona się jeden kod;

Jako pokutę zadaję Ci lekturę: try .. except oraz wielowątkowość - poczytaj, na pewno dowiesz się ciekawych rzeczy;

0
Andrzejbol3 napisał(a):

Co w tym niby nie rozumiem??
"Niby" nie rozumiesz podstaw. I właśnie od podstaw należało by zacząć naukę. Co was tak na te wątki naszło. Aplikacje wielowątkowe to już jest trochę więcej niż bezmyślne klikanie formatki w IDE. Tutaj RAD już nie pomoże, tutaj trzeba mieć trochę wiedzy. A czego nie ogarniasz? - samych podstaw wielowątkowości w delphi, które mówią nie grzebać w VCLu z innego wątku niż główny.

0

Czy w wątku czy nie tutaj akturat to nie ma nic do tego (poza błędem że odwołuje się do VCL bez synchronize) ale to co w except wykona się tylko wtedy gdy wystąpi błąd a z tego co widzę Form1.IdPOP3.Disconnect; w jakiś dziwny sposób jest w tym bloku czyli co nie powiedzie się połączenie to masz się rozłączyć? Coś tu chyba nie gra?

1 użytkowników online, w tym zalogowanych: 0, gości: 1