TEmbededWB yavaşlık sorunu (Durum biraz acil)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen adelphiforumz »

Selamlar

TEmbededWB ile bir siteyi açıyorum
Bu sitede bir liste var listedeki HTML kodlarını istediğim şekilde düzenledikten sonra aşağıdaki şekilde bir kodla refresh ettiriyorum
Fakat refresh işlemi bazen 1-2 sn sürerken bazen 40-50 sn sürebiliyor
Bu konuda bilgisi olan arakadaşlardan yardım rica ederim.

Not: WB üzerinde veri işleme konudunda ileri düzeyde bilgi sahibi olan arkadaşlar var ise
özel derste almakta isterim. Bu konuda benimle özelden yazışabilirmisiniz.

Teşekkürler

Kod: Tümünü seç

   procedure Tfrm.WBDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
   
   begin
         .....
         strHTML :  function WBGetDocumentHTML(WB) : String;
         //strHTML içeriği düzenleniyor....
         ..
         ..
         prc_YenidenUygula(WB);
         ....
   end;
     

  function WBGetDocumentHTML(WebBrowser : TEmbeddedWB) : String;
  var
    DOM : variant;
  begin
    result := '';
    try
      DOM := WebBrowser.Document;
      if WebBrowser.LocationURL <> '' then
      begin
          result := DOM.Body.outerHTML;
      end;
    except on e : exception do
      ...............
    end;
  end;


  procedure prc_YenidenUygula(WebBrowser : TEmbeddedWB);
  var
    ADoc : Variant;
  begin
    ADoc := WebBrowser.Document;
    ADoc.clear;
    ADoc.write(sHtml);
    ADoc.close;
    WebBrowser.Refresh;
  end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen cengaver »

Aşağıdaki linkte bir çok örnek mevcut, konular TWebBrowser için anlatılmış fakat EmbeddedWB'ye de uyarlamak zor değil,

http://www.cryer.co.uk/brian/delphi/twe ... /index.htm
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen adelphiforumz »

cengaver yazdı:Aşağıdaki linkte bir çok örnek mevcut, konular TWebBrowser için anlatılmış fakat EmbeddedWB'ye de uyarlamak zor değil,

http://www.cryer.co.uk/brian/delphi/twe ... /index.htm
Selamlar
Paylaşım için teşekkürler. Bu linkteki bilgileri daha önceden okumuş ve şu anda yaptığım uygulamada buna yakın şekilde işimi çözüyorum.
Fakat yaptığım test ve araştırmalarda benim sorunumun bir sayfayı düzenledikten sonra yeniden refresh etme olayında olduğunu fark ettim.
Eğer aşağıdaki örnekleyeceğim konuda bilgi sahibi olan yada yol gösterecek olanlar varsa şimdiden teşekkür ederim.

Yapmaya çalıştığım basitçe bir browser üzerinde tablo var
bu tabloyu alıcam buna yeni bir kolon ekliycem ve eklediğim kolonun içerisine bilgi yazıcam
sonra bu yazdığım yeni bilgiye göre satırın tamamını yada belli bir kolonu sadece renklendiricem.
bütün yapmaya çalıştığım işlemin özü bu.
Linkte bulunan örnek tablonun sonuna mesela "Yaş" diye bir kolon açıp bu günle doğum tarihinin arasındaki farkı bulup
40 yaş altı mavi 40 yaş üstü olanları yeşil yapmak ve "Kurum" değeri SSK ise Sadece ücret alanını kırmızı yapmak istiyorum.

Örnek bir tablo
http://havansoft.com/liste.html


Ben genelde bu işlemleri Browser'ın "OnDocumentComplate" kısmında Html olarak alıyorum
Replace yöntemi ile html'i yeniden düzenleyip Refresh ediyorum.
Yöntem sizce doğrumu
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen cengaver »

Peki web sitesinde bir form doldurup siteye bilgi göndermek veya sitenin ajax gibi teknolojilerle tazelenmesini sağlamak gibi şeyler araya girecek mi?

Eğer girecekse herhangi bir önerim yok, fakat sadece sayfadan bir bilgi çekip sonra o veriler çerçevesinde kullanıcıya birşeyler göstermek ise ben olsam sırayla şunları yapardım;

1) TidHttp nesnesi ile ilgili web sitesinin kaynak html kodunu çekerdim
2) html kodundan istediğim kısmı ayıklardım
3) ayıklanan kısma istediğim şeyleri yamalardım
4) yeni bir html kodu üretirdim
5) cryer.co.uk'daki gibi bu html kodunu twebbrowser'da gösterirdim...
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen adelphiforumz »

Selamlar

"cengaver" zaten üstte sorumu sorarken sizin dediğiniz yöntemle yaptığımı belirtmiştim.
tek farkı görebildiğim kadarı ile siz TidHttp ile kaynak alın diyorsunuz ben ise örnekte verdiğim gibi
"WBGetDocumentHTML" fonksiyou ile http'yi alıp işlem yapıyorum.
ve yenileme işini "prc_YenidenUygula" fonksiyonu ile yapıyorum

Bu işlem bu kadar sistemi yavaşlatabilirmi.
bazen sayfayı yenilemesi 25-30 sn sürebiliyor.
Ortalaması 10-15 sn.
eğer html üzerinde işlem yapmaz iseö 1-2 sn içinde geliyor.

benim derdim acaba uyguladığım yöntem yada yöntemin belli başlı sıralamasımı var
bu konuda bişeyler bilen varmıdır acaba.

Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen cengaver »

"adelphiforumz"

Güzel kardeşim, ben ne okuduğumun gayet farkındayım merak etme;

İster TEmbeddedWB olsun, ister TWebBrowser olsun bunlar sayfayı yüklerken (veya o sayfaya bir ekleme yaparken) düz, kuru bir iş yapmıyor. Arkada, yani senin görmediğin kısımda css'leri yüklüyor, scriptleri yüklüyor ayrıca sayfa mizanpajını da yapıyor. Hiçbir şey olmasa bile sırf sayfa mizanpajı bile belli bir süre alır. örnek verdiğin sayfanın içeriği bir tablo tagı ile yapılandırılmış, bu sayfayı yüklerken doğal olarak tablonun kenar çizgileri, çizgilerin aralıkları, hücrelerin aralıkları, kelimelerin uzunlukları, yazıların fontlarıydı renkleriydi, tüm bunlar belli değilse varsayılan değerlerini bulmaktı, browserin keşine kaydetmekti, keştekiyle aynımıydı derkeeeeeen haliyle doğal olarak biraz zaman alıyor.

Dolayısıyla TIdHTTP'yi önermemin temel sebebi buydu. Senin yapacağın, basitçe, TIDHTTP ile HTML kaynak kodunu çek, yapacağın değişikliği HTML kodunda yap, sonra elindeki yeni HTML kodunu TWebBrowser'de (veya embedded olanında) göster gitsin...
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: TEmbededWB yavaşlık sorunu (Durum biraz acil)

Mesaj gönderen greenegitim »

delphi dışı olacak ama python ve seleniumu araştırmanızı öneririm.
Mücadele güzelleştirir!
Cevapla