Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idhttp und links filtern (https://www.delphipraxis.net/106646-idhttp-und-links-filtern.html)

o0o 14. Jan 2008 14:31


idhttp und links filtern
 
hi leutz kann man diese procedure von marabu mit idhttp benutzen?
wenn ja wie? oder habt ihr ne alternative?^^

Delphi-Quellcode:
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings);
var
  ec: IHTMLElementCollection;
  e: IHTMLElement;
  i: integer;
  url: Variant;
begin
  ec := doc.links;
  for i := 0 to Pred(ec.length) do
  begin
    e := ec.item(i, 0) as IHTMLElement;
    url := VarToStr(e.getAttribute('href', 0));
    if url <> '' then
      s.Add(url);
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ExtractLinks(idhttp1, memo2)
end;
errormessage:
Zitat:

[DCC Fehler] Unit1.pas(94): E2010 Inkompatible Typen: 'IHTMLDocument2' und 'TIdHTTP'
hab zwar in der suche gekuckt aber iwi nix passendes fuer indy gefunden waere nice wenn jemand dafuer was haette^^

Klaus01 14. Jan 2008 14:34

Re: idhttp und links filtern
 
Hallo,

nun, idhttp liefert auch keinen Typ von IHTMLDocument2,
nur String oder Stream.

Soweit ich das weiß wird IHTMLDocument2 von TWebbrowser bereitgestellt.

Delphi-Quellcode:
ExtractLinks(webbrowser.document as IHTMLDocument2, memo2.lines)
Wobei webbrowser eine Instanz von TWebbrowser ist.

Grüße
Klaus

o0o 14. Jan 2008 14:38

Re: idhttp und links filtern
 
ehm joar dass der twebbrowser das hat bzw embeddedwb den ich bisher benutzt habe weiss ich nur ich will mit indy weitermachen da der ganze optische schniggschnagg unnoetig ist aber leider finde ich nix was auf indy passt^^

da o0o

marabu 14. Jan 2008 14:39

Re: idhttp und links filtern
 
Hi,

lies dich mal hier ein: klick

Freundliche Grüße

o0o 14. Jan 2008 14:54

Re: idhttp und links filtern
 
oh thx^^
aber irgendwas mach ich wieder falsch 0_o

Delphi-Quellcode:
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings; SearchString: String);
var
  ec: IHTMLElementCollection;
  e: IHTMLElement;
  i: integer;
  url: Variant;
begin
  ec := doc.links;
  for i := 0 to Pred(ec.length) do
  begin
    e := ec.item(i, 0) as IHTMLElement;
    url := VarToStr(e.getAttribute(SearchString, 0));
    if url <> '' then
      s.Add(url);
  end;
end;

 function GetDocument(const markup: WideString): IDispatch;
var
  doc: OleVariant;
begin
  Result := CoHtmlDocument.Create;
  doc := Result;
  doc.Open;
  doc.Write(markup);
  doc.Close;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  docd: IDispatch;
  doc: IHTMLDOCUMENT2;
  url: String;
begin
  url := 'http://www.meineurl.de';
  docd := GetDocument(IdHttp1.Get(url));
end;
btw doc: IHTMLDOCUMENT2; wird nicht verwendet...hat jemand ne ahnung wie ich das hinbiege?

thx fuer die hilfe leutz:)

da o0o

marabu 14. Jan 2008 15:49

Re: idhttp und links filtern
 
Du machst es schon fast richtig:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
  doc: IHTMLDOCUMENT2;
  url: String;
begin
  url := 'http://www.meineurl.de';
  doc := GetDocument(IdHttp1.Get(url)) as IHTMLDocument2;
  ExtractLinks(doc, ListBox.Items, SearchString);
end;
Freundliche Grüße

o0o 15. Jan 2008 00:55

Re: idhttp und links filtern
 
ahoi marabu thx, jetzt kann ich die anwendung endlich erstellen^^
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
  doc: IHTMLDOCUMENT2;
  url: String;
begin
  url := 'http://www.google.de';
  doc := GetDocument(IdHttp1.Get(url)) as IHTMLDocument2;
  ExtractLinks(doc, ListBox1.Items, 'google');
end;
nur finden tut es irgendwie nix bzw die listbox bleibt leer 0_o


da o0o

marabu 15. Jan 2008 06:21

Re: idhttp und links filtern
 
Moin,

wenn ich mir das genau anschaue, dann sehe ich, dass du in Beitrag #1 die Originalversion der Prozedur ExtractLinks() angibst. In Beitrag #5 zeigst du eine modifizierte Version, die du scheinbar auch verwendest. Über den dritten Parameter selektierst du nur solche Links, die ein entsprechend benanntes Attribut aufweisen. Ich behaupte jetzt mal kühn, dass es in deinem Testdokument keine Links mit passendem Namen gibt.

Freundliche Grüße

o0o 15. Jan 2008 07:16

Re: idhttp und links filtern
 
lol marabu du bist der beste(...bist nicht umsonst in meiner sig;))
hast recht es hing an der modifizierten version ich hab einfach verschiedene codeschnipsel ausprobiert die ich hier fand und nicht gemerkt dass extractlinks modifiziert war :wall:

naja alles klappt wunderbar und gut an der stelle hier danke an alle die hier geholfen haben:)

euer o0o :dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz