while döngü hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

while döngü hatası

Mesaj gönderen brs »

Selam;
while ile broweser da arama işlemi yaptırıyorum aranan kriter bulunana kadar döngü devam ediyor fakat 5 veya 6 sayfada except devreye giriyor
ve "hata oluştu" bilgisi ortaya çıkıyor yaklaşık daha 25 sayfa daha var bu durumu nasıl çöze bilirim...

Kod: Tümünü seç

       
 while Cardinal(IEApp.readyState) <> 4 do
        begin
          Sleep(1000);
          N := Cardinal(IEApp.Document.links.length);
          for i := 0 to N - 1 do
          begin
            ArananLink := IEApp.Document.links.item(i);
            if ArananLink = LinkEdit.Text then
            begin
              Bilgi.Caption := 'Kriterlere Uygun Kayıt Bulundu!';
              IEApp.Document.links.item(i).Click;
              Urlara := True;
              Break;
            end
            else
            begin
              IEApp.Document.getElementById('pnnext').Click;
              Bilgi.Caption := 'Lütfen Bekleyiniz İşlem Devam Ediyor!'
            end;
          end;
          if Not Urlara then
          begin
            Bilgi.Caption := 'Kriterlere Uygun Kayıt Bulunamadı!';
          end;
        end;
      except
        Bilgi.Caption := 'Hata Oluştu!';
        Urlara := True;
      end;
    end;
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: while döngü hatası

Mesaj gönderen SimaWB »

Sizin yazdığınız bir try-except bloğu içinde düştüğü için hangi satırda hata verdiğini kolaylıkla bulabilirsiniz.
İlk bakışta dikkatimi çeken: sayfada pnnext id'li bir eleman yoksa yazdığınız kod hata verir.
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: while döngü hatası

Mesaj gönderen brs »

Teşekkür ederim ilgilendiğiniz için keşke edeceğiniz gibi olsaydı "pnnext" id var...

Hata kodu Could not convert variant of type (Dispatch) into type (OleStr)'. Process Setup.exe (7924)
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: while döngü hatası

Mesaj gönderen freeman35 »

Kod: Tümünü seç

except
    on E: Exception do begin
      Application.MessageBox(PChar('HATA Oluştu...' + LineEnding + E.Message),Application.Title), MB_OK + MB_ICONERROR);
    end;
end;
Bu sistemin verdiği hatayı gösterir, hata bulman daha kolay olur.
N := Cardinal(IEApp.Document.links.length); ben olsam
if IEApp.Document=nil or IEApp.Document.Link = nil then exit; tarzı kontrol ler koyarım.
Türkiyede devlet gavura hizmet ettiği için, adsl de alt yapıya yatırım yapılmaz ve 10mbit i 10,000 kişi ye verirler adsl dialup tan beter çalışır, sayfalar gelmez.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: while döngü hatası

Mesaj gönderen brs »

Selam;

xe5 kullanıyorum LineEnding sıkıntı var? nette araştırdım bir şey bulamadım.

Resim

SimWB dediği sorun "'pnnext" den kaynaklanıyor onlarca metot denedim "'pnnext" varsa click işlemi yapılsın yoksa yapılmasın komutunu veremedim bir türlü

Kod: Tümünü seç

(IEApp.Document.getElementById('pnnext').Click;) 
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: while döngü hatası

Mesaj gönderen SimaWB »

Sn.freeMan35 FreePascal kullandığı için LineEnding yazmış sanırım. Onun Delphi'deki karşılığı sLineBreak.

IEApp.Document.getElementById('pnnext') ile dönen değeri bir değişkene atamalısınız. Sonrasında bunun nil olup olmadığını kontrol etmelisiniz.

Kod: Tümünü seç

var
  pnnextElement: IHTMLElement;
begin
  pnnextElement := IEApp.Document.getElementById('pnnext');
  if Assigned(pnnextElement) then
    pnnextElement.Click;
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: while döngü hatası

Mesaj gönderen brs »

Hocam if Assigned(pnnextElement) then ve bir çok fonksiyon denedim maalesef olmadı...

Resim

Kod: Tümünü seç

var
  pnnextElement: string;
begin
......
         end
            else
            begin
              pnnextElement := IEApp.Document.getElementById('pnnext');
              if Assigned(pnnextElement) then
                pnnextElement.Click;
            end;
birde pnnextElement: IHTMLElement; yerine pnnextElement: string; olarak değiştirdim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: while döngü hatası

Mesaj gönderen freeman35 »

öğrenmedikten sonra, Ezbere iş yaparsanız çok zorlanırsınız, LineEnding SimaWB nin dediği gibi FreePascal komutu, biraz fikir yürütmek yeterli, benim verdiğim kodlar fikir versin diye yazdığım kodlardır hep, kopyala yapıştır için değil.
Assigned da adından anlaşılacağı gibi, (atanmış mı? diye tercüme edilebilinir), parametrelerini kotrol edilirse, pointer olduğunu anlaşılır, "pnnextElement: string;" bir tanımlanmış değişkendir, bir değişken nasıl kotrol edilir heralde biliniyordur.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: while döngü hatası

Mesaj gönderen brs »

Cevabınız için teşekkür ederim;

Eleştirinizde kısmen de olsa size katılıyorum ama Türkiye şartlarını göz ardı etmemek lazım maalesef yeteri derecede öğrenebileceğimiz alan yok internet ortamı veya varsa kurslar, kurslarda ise ne kadar öğretiyorlar dır malum buton tıkladığında başka bir formu açılması gibi basit konular...

Benim sıkıntı yaşadığım olay internet explorer da google Sonraki buton idsi olan (id="pnnext") ile ilgili sorun yaşıyorum norma şartlarda bu id tıklama işlemi yaptırıyorum ama bu son sayfada olmadığından tıklam işlemi yine gerçekleştiğinden hata alıyorum...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: while döngü hatası

Mesaj gönderen freeman35 »

Mesajları okuyan kişiler ders alsınlar diye, yazdıklarımı hep genellemeye çalışırım, ömrümde görmediğim muhtemelende hiç görmiyeceğim birinle ne, neden derdim olsun ki? Kavga etmek en kolay şey, anlaşmaksa en zor olan, e bu bağlamda zor olanı yapmak marifet oluyor :)
Kurslar evet, çok şey öğretmezler, başlangıç temel bilgileri anlatırlar gerisi size kalmıştır. Daha önceleri defalarca yazdım, ben üniversite mezunu değilim, kendime lise mezunu bile demem, bende ilk kursa giderek başladım, hemde sadece gwbasic ile, 8080 lerde işlemci hızı 8(sekiz) mhz idi :D ama kursta gündüz öğretilen bir komuta karşılık, ingilizce sözlükle hem ingilizce öğrendim, hemde programlama yeteneğimi geliştirdim. Yani öğrenmek size kalmış birşey.
"hata alıyorum..." böyle bir soruya, ben birdaha mesaja bakmıyorum bile, illaki cevap verileceksede Hak taalanın hikmeti sual olunmaz diyebilirim :) ne yadında ne yaparken ne hata verdi yazmazsan nerden bilebiliriz?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla