For döngüye girmiyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

For döngüye girmiyor

Mesaj gönderen Serhat »

İyi Akşamlar...
Browser olarak firefox kullanarak çıkan sonuçları memoya almak istiyorum ancak (for I := 0 to IEAra.Document.Links.length - 1 do) döngüye girmiyor

Kod: Tümünü seç

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  I: integer;
  IEAra: OleVariant;
begin
  IEAra := ShellExecute(0, 'open', 'firefox.exe',
    PChar('https://www.google.com.tr/search?q=' + 'Modem'), '', SW_Normal);

  while IEAra - 1 do
  begin
    Sleep(1000);
    Application.ProcessMessages;
    for I := 0 to IEAra.Document.Links.length - 1 do
    begin
      Memo1.Lines.Add(Trim(IEAra.Document.Links.Item(I).InnerText));
    end;
  end;
end;
Bu konuda ne yapabilirim?

http://i.hizliresim.com/jYlA4J.png

freeman35:Alt tarafı 3 kelime hata mesajı yazmak yerine, yarım sayfa resmi koyma. Hiyoroglif kullanmıyoruz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: For döngüye girmiyor

Mesaj gönderen Lord_Ares »

I: integer; bir değişkene variant tipinde değer geliyor sanırım bu yüzden kaynaklanıyor. Hata mesajından anladığım o "invalid variant oparation ".
Gelen değeri kontrol edin, normal delphideki webbowser ile bu komutta sorun çıkmayabilir fakat siz shellexe ile çağırıdığınız için sanırım variant tipinde değer geliyor..
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: For döngüye girmiyor

Mesaj gönderen Serhat »

Lord_Ares yazdı:I: integer; bir değişkene variant tipinde değer geliyor sanırım bu yüzden kaynaklanıyor. Hata mesajından anladığım o "invalid variant oparation ".
Gelen değeri kontrol edin, normal delphideki webbowser ile bu komutta sorun çıkmayabilir fakat siz shellexe ile çağırıdığınız için sanırım variant tipinde değer geliyor..
shellexe Yerine başka ne kullana bilirim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: For döngüye girmiyor

Mesaj gönderen thelvaci »

Bakın MSDN'de Shellxecute fonksiyonunun geri dönüş değeri için ne söylüyor:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Return value

Type: HINSTANCE

If the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. It can be cast only to an int and compared to either 32 or the following error codes below.
Ayrıca geri dönen değeri

Kod: Tümünü seç

 while IEAra - 1 do ....
biçiminde kullanarak ne yapmaya çalışıyorsunuz o da epeyce garip olmuş ! Siz ilgili web sitesini TWebBrowser içine yüklemeli ardından, ilgili döküman üzerinden arama yapmalısınız. Ki, bu hususla alakalı bir çok konuyu da bu forum üzerinde arama yaparak rahatça bulabilirsiniz.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: For döngüye girmiyor

Mesaj gönderen brs »

Serhat yazdı:İyi Akşamlar...
Browser olarak firefox kullanarak çıkan sonuçları memoya almak istiyorum ancak (for I := 0 to IEAra.Document.Links.length - 1 do) döngüye girmiyor

Kod: Tümünü seç

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  I: integer;
  IEAra: OleVariant;
begin
  IEAra := ShellExecute(0, 'open', 'firefox.exe',
    PChar('https://www.google.com.tr/search?q=' + 'Modem'), '', SW_Normal);

  while IEAra - 1 do
  begin
    Sleep(1000);
    Application.ProcessMessages;
    for I := 0 to IEAra.Document.Links.length - 1 do
    begin
      Memo1.Lines.Add(Trim(IEAra.Document.Links.Item(I).InnerText));
    end;
  end;
end;
Bu konuda ne yapabilirim?

http://i.hizliresim.com/jYlA4J.png

freeman35:Alt tarafı 3 kelime hata mesajı yazmak yerine, yarım sayfa resmi koyma. Hiyoroglif kullanmıyoruz.
Yanlış bilmiyorsam eğer internet explorer haricinde diğer browserlardan veri çekemezsiniz
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: For döngüye girmiyor

Mesaj gönderen Serhat »

thelvaci vermiş olduğunuz linki inceledim fakat bir şey anlamadım...


Brs (Yanlış bilmiyorsam eğer internet explorer haricinde diğer browserlardan veri çekemezsiniz) size katılmıyorum mutlaka bir formül vardır
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: For döngüye girmiyor

Mesaj gönderen mrmarman »

Serhat yazdı:thelvaci vermiş olduğunuz linki inceledim fakat bir şey anlamadım...


Brs (Yanlış bilmiyorsam eğer internet explorer haricinde diğer browserlardan veri çekemezsiniz) size katılmıyorum mutlaka bir formül vardır
Yapılır veya yapılmaz, ayrı konu. Yapmak için çok farklı yöntemler var. ActiveX ile olur proxy ile olur vs.
Asıl soru her browser için ayrı ayrı veri çekme isteğinin sınırı nedir?

Her browser için çalışsın istiyorsan akışı okuyuacak proxy temelli kurup, oradan yürüyebilirsin. Gelen paketleri sessiona göre sınıflandırıp metni alıp string operasyonu ile parse edebilirsin.

Tabi içerik oyunlar, maliye bilgileri vb. secure bağlı java vb değilse. Zaten bu frameleri browser üzerinden de almak özel bir çalışma gerektirir.

Sadece browser üzerinde çözmek istiyorsan, yarın yandex olur, Firefox'un başka sürümü olur, chrome altyapısını değiştirir... sebeplerle projen kullanılmaz hale gelir. Unutms ki sadece pencere sınıf adını değiştirse, projeni hardcode müdahale etmediğin sürece explorer'dan bile veri çekemez duruma gelirsin.

Başarılar.
Resim
Resim ....Resim
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: For döngüye girmiyor

Mesaj gönderen Serhat »

Sn: mrmarman, :D yazdıklarınızı okuyunca bir an çok korktum ama yapmak istediğim şey bu kadar zor diye düşündüm,

Normalde IE := CreateOleObject('InternetExplorer.Application'); explorer ile yapılabiliyorsa neden diğer browserlarla da yapılmasın.
Fakat nereden başlayacağımı anlayamadım haftalardır formda ve nette çok araştırdım hiç bir şey bulamadım desem yalan olmaz ya insanlar bilgilerini paylaşmak istemiyor yada doğru kişiye denk gelmedi...
Sizden ricam daha basit bir ne yapmam gerek bilgisini verirseniz sevinirim...
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: For döngüye girmiyor

Mesaj gönderen thelvaci »

Serhat yazdı:Sn: mrmarman, :D yazdıklarınızı okuyunca bir an çok korktum ama yapmak istediğim şey bu kadar zor diye düşündüm,

Normalde IE := CreateOleObject('InternetExplorer.Application'); explorer ile yapılabiliyorsa neden diğer browserlarla da yapılmasın.
Fakat nereden başlayacağımı anlayamadım haftalardır formda ve nette çok araştırdım hiç bir şey bulamadım desem yalan olmaz ya insanlar bilgilerini paylaşmak istemiyor yada doğru kişiye denk gelmedi...
Sizden ricam daha basit bir ne yapmam gerek bilgisini verirseniz sevinirim...

Sizin nerede yanlış yaptığınızı ifade edip, ne kullanmanız gerektiğini söylüyoruz; buna rağmen yardımcı olmak istemiyoruz ve bilgimizi saklıyoruz öyle mi ? Bakın ShellExecute ile bir uygulama başlatırsınız. Bu bir process instance'ıdır. Eğer ShellExecute'den dönen değerin ne olduğu ile alakalı paylaştıklarımı okumuş olsa idiniz istediğinizin ShellExecute olmadığını da anlamış olurdunuz. Sizin yapmaya çalıştığınız şey kodunuzdan gördüğümüz kadarı ile, ilgili web sayfası içindeki linkleri tespit etmek. Bunun için bir önceki mesajımda da dediğim gibi; TWebBrowser sınıfını kullanmalısınız. Bu sınıfın Navigate metodunu çağırdıktan sonra, içerik ekrana gelene kadar TWebbrowser.ReadyState değerini kontrol ederek beklemek. Ardından da ilgili sınıfın Document property'sini ilgili interface'lerden birisine cast ederek; döküman içindeki linkleri dolaşmak. Hepsi bu kadar basit. Verilen cevapları anlamak istemiyorsanız; size ne diyelim bilmem.
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: For döngüye girmiyor

Mesaj gönderen Serhat »

Sayın, thelvaci siz niye üstünüze alındınız anlayamadım ben genel olarak bahsetmiştim...

Ayrıca madem ki ShellExecute' yöntemiyle olmuyorsa sadece olmadığını söylemeniz bence yeterli olurdu, TWebbrowser kullanmak istemememin sebebi hazır browserlar var google, yandex veya firefox gibi varken neden
TWebbrowser kullanmak istemedim diğer browserlardan sadece verileri almam benim için yeterli...
Cevapla