Konu ile görsel resim:
Bir buton altında iç içe prosedür ve fonksiyonlarım var. Ve butona tıklanınca TwebBrowser ve Veritabanı işlemlerini oldukça çok kullanmaktayım.
Problem:
TWebBrowser'ı beklenenURL ve gonderilenURL lere bakarak kullanmaktayım.
beklenenURL = gonderilenURL eşitse sayfanın yüklenmesi tamamlanmış oluyor. Ve bu olmadıkça while döngüsü içerisinde dönüyorum. Bazen site hata veriyor doğal olarak beklenenURL hiç bir zaman gonderilenURL e eşit olmuyor. while içerisinde takılıp kalıyorum.
Yapılan:
Şöyle bir şey yapayım dedim. Form'a bir timer attım.
Timer1.interval = 10000 yaptım.
Kod: Tümünü seç
timerURLTimer(Sender: TObject);
begin
xStop : True //xStop Global Boolean değişken
Application.MessageBox(PChar('Bir hata oluştu..'), 'Hata', mb_Ok or MB_ICONERROR);
TwebBrowser1.Free;
timerURL.Enabled := False;
end;
Kod: Tümünü seç
TWebBrowser1DocumentComplete
begin
if xStop then
begin
timerURL.Enabled := False;
timerURL.Enabled := True;
end;
end;
Main'e de hepsini kapsayan bir try-Except bloğu attım.
Bir prosedür yada fonksiyon un bir yerinde takılı kalırsam 10 saniye sonra TwebBrowser'i free ettiğim için TWebBrowser1DocumentComplete gittiğinde hata fırlıyor, böylece E_Procedur ünde bir hata alsamda Mainden yakalamış oluyorum. Yani Mainde ki kod bloğunun sonuna gelmiş oluyorum.
Not:
Netten Thread konularına baktım ancak TwebBrowserla thread içerisinde bir işlem yapamadım, hata verdi.
_____________________________________________________________________________________
Merak Ettiğim:
Yani iç içe Prosedür/foksiyonlarda en içtekinden bir hata fırlatılsa en dıştakinden yakalamak.
Bu yaptığım doğrumudur yada mantıklı mıdır?