- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Returnera alla bildlänkar i HTML-dokument Kategori: Internet
Inlagt: 2005-08-23
Läst: 1381
Inlagt av: Staffan Berg
Beskrivning
Detta exempel returnerar alla länkar till bilder som finns i angivet HTML-dokument. Dessa skrivs sedan i i en TMemo. Observera klasserna i uses-lista.
Kod
uses mshtml, ActiveX, COMObj, IdHTTP, idURI; 
 
{ .... } 
 
procedure GetImageLinks(AURL: string ; AList: TStrings); 
var 
 IDoc: IHTMLDocument2; 
 strHTML: string ; 
 v: Variant; 
 x: Integer; 
 ovLinks: OleVariant; 
 DocURL: string ; 
 URI: TidURI; 
 ImgURL: string ; 
 idHTTP: TidHTTP; 
begin 
 AList.Clear; 
 URI := TidURI.Create(AURL); 
 try 
  DocURL := 'http://' + URI.Host; 
  if URI.Path <> '/' then 
   DocURL := DocURL + URI.Path; 
 finally 
  URI.Free; 
 end; 
 Idoc := CreateComObject(Class_HTMLDocument) as IHTMLDocument2; 
 try 
  IDoc.designMode := 'on'; 
  while IDoc.readyState <> 'complete' do 
   Application.ProcessMessages; 
  v   := VarArrayCreate([0, 0], VarVariant); 
  idHTTP := TidHTTP.Create(nil); 
  try 
   strHTML := idHTTP.Get(AURL); 
  finally 
   idHTTP.Free; 
  end; 
  v[0] := strHTML; 
  IDoc.Write(PSafeArray(System.TVarData(v).VArray)); 
  IDoc.designMode := 'off'; 
  while IDoc.readyState <> 'complete' do 
   Application.ProcessMessages; 
  ovLinks := IDoc.all.tags('IMG'); 
  if ovLinks.Length > 0 then 
  begin 
   for x := 0 to ovLinks.Length - 1 do 
   begin 
    ImgURL := ovLinks.Item(x).src; 
    // The stuff below will probably need a little tweaking 
    // Deteriming and turning realtive URLs into absolute URLs 
    // is not that difficult but this is all I could come up with 
    // in such a short notice. 
    if (ImgURL[1] = '/') then 
    begin 
     // more than likely a relative URL so 
     // append the DocURL 
     ImgURL := DocURL + ImgUrl; 
    end 
    else 
    begin 
     if (Copy(ImgURL, 1, 11) = 'about:blank') then 
     begin 
      ImgURL := DocURL + Copy(ImgUrl, 12, Length(ImgURL)); 
     end; 
    end; 
    AList.Add(ImgURL); 
   end; 
  end; 
 finally 
  IDoc := nil; 
 end; 
end; 
 
 
// Example: 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 GetImageLinks('http://www.fuzzydizzie.com, Memo1.Lines); 
end; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -