Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi XE5 ve Webbrowser sorunu
#1
Merhabalar,
Delphi xe5 e yeni geçtim. Öncesinde XE kullanıyordum. XE de yapmış olduğum bir projeyi XE5 e uyarlayacağım android webbrowser ile fakat aşağıdaki hatayı alıyorum. MSHTML_TLB ile ilgili bir sorunum var. Winapi.Windows.dcu dosyasını bir türlü ayarlayamadım ve import component ile yaptığım microsoft http object library ile çözülmesi gerektiği yazıyor ama olmadı bir türlü.

Yardımlarınız için şimdiden teşekkürler.

[DCC Fatal Error] MSHTML_TLB.pas(215): F1026 File not found: 'c:\program files (x86)\embarcadero\rad studio\12.0\lib\Android\Release\Winapi.Windows.dcu' (unit scope "Winapi" indicates Win32, Win64 only)


Ek Dosyalar Resimler
   
Cevapla
#2
"Android webbrowser" dediğinize göre siz mobil uygulama geliştireceksiniz?
Eğer öyleyse Firemonkey kullanmalısınız. Yani uygulama tipi tamamen değişecek. Multi-Device Applications seçerek yeni bir uygulama başlatmalı ve buradan devam etmelisiniz. Böyle olunca da FMX.WebBrowser.TWebBrowser'ı kullanmanız gerekir.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(19-11-2018, Saat: 12:58)smyrna231802 Adlı Kullanıcıdan Alıntı: [DCC Fatal Error] MSHTML_TLB.pas(215): F1026 File not found: 'c:\program files (x86)\embarcadero\rad studio\12.0\lib\Android\Release\Winapi.Windows.dcu' (unit scope "Winapi" indicates Win32, Win64 only)

Burada zaten hatanın sebebi yazıyor. Kütüphane ile ilgili bir durum. (unit scope "Winapi" indicates Win32, Win64 only)

Eklediğiniz kütüphaneler sadece Windows işletim sisteminde (win32 ve win64) olarak çalışır. Android için bunların karşılığını bulmalısınız veya WebBrowser olarak android xe5 sürümünde ne kullanılıyor bunu bulun.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#4
(19-11-2018, Saat: 13:15)SimaWB Adlı Kullanıcıdan Alıntı: "Android webbrowser" dediğinize göre siz mobil uygulama geliştireceksiniz?
Eğer öyleyse Firemonkey kullanmalısınız. Yani uygulama tipi tamamen değişecek. Multi-Device Applications seçerek yeni bir uygulama başlatmalı ve buradan devam etmelisiniz. Böyle olunca da FMX.WebBrowser.TWebBrowser'ı kullanmanız gerekir.

Merhaba,

Uygulamayı oluştururken FireMonkey Mobile Application - Delphi olarak seçiyorum component de WebBrowser olarak geliyor karşıma ve ekliyorum.

Yazdığım kodlar arasında şunlar var :
  
htmlDoc: IHTMLDocument2;
  TumLinkler: IHTMLElementCollection;
  BirLink: IHTMLElement;

Bunun için uses'a MSHTML_TLB ekliyorum fakat MSHTML_TLB.pas dosyasında aşağıdaki satırdaki uses'ların bir kısmı için File Not Found diyor. Örneğin : Winapi.Windows.dcu not found gibi 

uses Winapi.Windows, System.Classes, System.Variants, System.Win.StdVCL, Vcl.Graphics, Vcl.OleCtrls, Vcl.OleServer, Winapi.ActiveX;



Proje görüntüsü ekte

(19-11-2018, Saat: 13:19)3ddark Adlı Kullanıcıdan Alıntı:
(19-11-2018, Saat: 12:58)smyrna231802 Adlı Kullanıcıdan Alıntı: [DCC Fatal Error] MSHTML_TLB.pas(215): F1026 File not found: 'c:\program files (x86)\embarcadero\rad studio\12.0\lib\Android\Release\Winapi.Windows.dcu' (unit scope "Winapi" indicates Win32, Win64 only)

Burada zaten hatanın sebebi yazıyor. Kütüphane ile ilgili bir durum. (unit scope "Winapi" indicates Win32, Win64 only)

Eklediğiniz kütüphaneler sadece Windows işletim sisteminde (win32 ve win64) olarak çalışır. Android için bunların karşılığını bulmalısınız veya WebBrowser olarak android xe5 sürümünde ne kullanılıyor bunu bulun.

Bir bulabilsem Smile Delphi Android ilk defa deniyorum da Sad


Ek Dosyalar Resimler
   
Cevapla
#5
Merhaba,

FireMonkey framework'ü XE2 itibariyle Delphi bünyesine katılmıştır. XE ile geliştirdiğiniz Android'de hangi framework'ü kullanıyordunuz? XE5'in çok kritik eksikleri bulunuyor. Eğer henüz yeni başladıysanız 10.1 Berlin veya 10.2 Tokyo ile devam etmelisiniz. Eğer 10.X+ lisansınız bulunmuyorsa XE8'e güncelleme satın alarak devam edebilirsiniz. XE serilerinde en stabil olanı 8. sürümdür.

Not: Community Edition ile 10.2 Tokyo sürümünü ücretsiz olarak edinebilirsiniz. Detaylı bilgi için embarcadero.com sitesini ziyaret edin.
Cevapla
#6
(19-11-2018, Saat: 14:20)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba,

FireMonkey framework'ü XE2 itibariyle Delphi bünyesine katılmıştır. XE ile geliştirdiğiniz Android'de hangi framework'ü kullanıyordunuz? XE5'in çok kritik eksikleri bulunuyor. Eğer henüz yeni başladıysanız 10.1 Berlin veya 10.2 Tokyo ile devam etmelisiniz. Eğer 10.X+ lisansınız bulunmuyorsa XE8'e güncelleme satın alarak devam edebilirsiniz. XE serilerinde en stabil olanı 8. sürümdür.

Not: Community Edition ile 10.2 Tokyo sürümünü ücretsiz olarak edinebilirsiniz. Detaylı bilgi için embarcadero.com sitesini ziyaret edin.

Dediğiniz gibi Community Edition 10.2 TOKYO indirdim kurdum ama yine aynı durum  Sad
IHTTPDocument2 in çalışması için Import Component'ten Microsoft HTTP Object Library'i kurmam gerekiyor bildiğim kadarıyla ve kurduğumda MSHTTP_TLB Hata veriyor Yine

[DCC Fatal Error] Unit1.pas(7): F2613 Unit 'MSHTML_TLB' not found.
Cevapla
#7
(19-11-2018, Saat: 18:05)smyrna231802 Adlı Kullanıcıdan Alıntı: Dediğiniz gibi Community Edition 10.2 TOKYO indirdim kurdum ama yine aynı durum  Sad
IHTTPDocument2 in çalışması için Import Component'ten Microsoft HTTP Object Library'i kurmam gerekiyor bildiğim kadarıyla ve kurduğumda MSHTTP_TLB Hata veriyor Yine

[DCC Fatal Error] Unit1.pas(7): F2613 Unit 'MSHTML_TLB' not found.

Hatanın kaynağını sanırım yakaladım. Kurduğunuz kütüphaneyi hiç kullanmadım ama Microsoft HTTP Object Library isminden anladığım kadarıyla Microsoft Windows işletim sistemine has bir kütüphane.

Bildiğiniz üzere FMX (FireMonkey) ile VCL (Visual Component Library) farklı arayüz yapıları. Bu yüzden VCL tabanında geliştirilen harici kütüphaneleri doğrudan FMX tabanında kullanamazsınız. Çünkü FMX mimarisinin temelinde PlatformAssistant denilen ve cross-platform'a çıkmak için kodlarınızı binary haline getirdikten sonra hedef platforma göre özelleştiren bir yapı mevcut.

Özetle; Android için HTTP'de böyle bir kütüphaneye ihtiyaç duyanların neler yaptığına bir bakmak lazım. Bu kütüphanede tam olarak ihtiyacınız nedir?
Cevapla
#8
(19-11-2018, Saat: 18:15)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı:
(19-11-2018, Saat: 18:05)smyrna231802 Adlı Kullanıcıdan Alıntı: Dediğiniz gibi Community Edition 10.2 TOKYO indirdim kurdum ama yine aynı durum  Sad
IHTTPDocument2 in çalışması için Import Component'ten Microsoft HTTP Object Library'i kurmam gerekiyor bildiğim kadarıyla ve kurduğumda MSHTTP_TLB Hata veriyor Yine

[DCC Fatal Error] Unit1.pas(7): F2613 Unit 'MSHTML_TLB' not found.

Hatanın kaynağını sanırım yakaladım. Kurduğunuz kütüphaneyi hiç kullanmadım ama Microsoft HTTP Object Library isminden anladığım kadarıyla Microsoft Windows işletim sistemine has bir kütüphane.

Bildiğiniz üzere FMX (FireMonkey) ile VCL (Visual Component Library) farklı arayüz yapıları. Bu yüzden VCL tabanında geliştirilen harici kütüphaneleri doğrudan FMX tabanında kullanamazsınız. Çünkü FMX mimarisinin temelinde PlatformAssistant denilen ve cross-platform'a çıkmak için kodlarınızı binary haline getirdikten sonra hedef platforma göre özelleştiren bir yapı mevcut.

Özetle; Android için HTTP'de böyle bir kütüphaneye ihtiyaç duyanların neler yaptığına bir bakmak lazım. Bu kütüphanede tam olarak ihtiyacınız nedir?

Aşağıdaki kodu windows uygulamada kullanabiliyorum fakat benim android uygulamada kullanmam gerekiyor.
Bu google da bir arama yapıyor ve çıkan sonuçta girdiği web sitesi adresi varsa ona tıklıyor. Bir müşterim istedi bu uygulamayı artık ne için kullanacaksa. Fakat IHttpDocument benzeri olayları android için kullanamıyorum.

Function Sorgula(WebBrowser1: TWebBrowser;
  strAramaAnahtari, strKarsilastirma: String): Boolean;
Const
  AraFormat =
    'https://www.google.com.tr/search?as_q=%s&hl=tr&num=20&btnG=Google''da Ara&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images';
Var // MSHTML
  htmlDoc: IHTMLDocument2;
  TumLinkler: IHTMLElementCollection;
  BirLink: IHTMLElement;
  url: String;
  i: Integer;
begin

  WebBrowser1.Navigate(Format(AraFormat, [strAramaAnahtari]));

  while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
  begin
    Sleep(1);
    Forms.Application.ProcessMessages;
  end;   

  htmlDoc := WebBrowser1.Document as IHTMLDocument2;
  TumLinkler := htmlDoc.Links;
  Result := False;
  i := 0;
  while (i < TumLinkler.Length - 1) AND (NOT Result) do
  begin
    BirLink := TumLinkler.Item(i, '') as IHTMLElement;
    url := BirLink.toString;
    if Pos(strKarsilastirma, url) = 1 then
    begin
      Result := True;
      BirLink.click;
    end;
    Application.ProcessMessages;
    inc(i);
  end;
end;
Cevapla
#9
(19-11-2018, Saat: 18:34)smyrna231802 Adlı Kullanıcıdan Alıntı: Aşağıdaki kodu windows uygulamada kullanabiliyorum fakat benim android uygulamada kullanmam gerekiyor.

Kullanamazsınız!
Yukarıda da belirtildiği gibi bunlar Windows'a özgü komutlar/kütüphanler/teknolojiler.
FMX'de durum biraz daha farklı.
There's no place like 127.0.0.1
WWW
Cevapla
#10
Android tarafında en son webbrowserin 5 tane eventi vardı vcl kadar gelişmiş değil malesef

Bu eventlerden birine sayfa yükleyince giriyordu ve birinde de sayfa yuklenmeden giriyordu orada url de google ve search anahtar kelimelerini bulursanız arama yapmış demektir , yüklendiğinde içinde arayın
Olmazsa IdHttp ye o url yi geçirin ordan dökümünü alın orda arayın

Ugrasmayim derseniz bir buton koyun kelime var mı diye direk bulunduğu sayfada arasın

Şuan webbrowser içinde node lar olarak dolaşılıyor muydu hatırlamıyorum , dolaşılıyorsa işiniz daha kolay
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Exclamation Delphi 12 - Android 14 nevez 22 903 26-04-2024, Saat: 22:54
Son Yorum: nevez
  Delphi 12 IOS Simulatorde Uygulama Çalışmıyor elixir84 7 1.224 24-04-2024, Saat: 10:40
Son Yorum: elixir84
  Delphi FMX Enter tuşu (dpad_center) yakalama tarkancengiz 8 371 20-03-2024, Saat: 15:54
Son Yorum: tarkancengiz
  FMX Webbrowser nasıl yazdırılır barissagir 0 119 04-03-2024, Saat: 12:11
Son Yorum: barissagir
  Webbrowser Focus Değeri barissagir 0 108 04-03-2024, Saat: 11:08
Son Yorum: barissagir



Konuyu Okuyanlar: 1 Ziyaretçi