![]() |
memo komponente untersuchen (ein html code)
Gibt es zufällig/ hat jemand so ein delphi programm geschrieben? Wo eine memo komponente untersucht wird?
Ich habe nämlich mittels Indy-komponenten mir ein programm gebastelt womit ich mir den html code einer seite anschauen kann. Bisher einzige funktion die html seite local abzuspeichern... ich würde gerne noch sachen wie bestimmte html codes rausfiltern und eventuell bilder (<img src") per klick runterladen.... also bisher habe ich einmal dadurch wird die in Edit1.Text eingegeben url in das memo feld geladen
Delphi-Quellcode:
Und hiermit kann ich die seite als html datei speichern
procedure TForm1.BTestClick(Sender: TObject);
var s : string; begin s := IdHTTP.Get(Edit1.Text); Memo.Lines.Text := s; end;
Delphi-Quellcode:
procedure TForm1.BMiyClick(Sender: TObject);
var s : TFileStream; filename : TFileName; begin if SaveDialog.Execute() then begin filename := SaveDialog.FileName; try s := TFileStream.Create(filename,fmCreate); IdHTTP.Get(Edit1.Text,s); finally s.Destroy; end end end; |
Re: memo komponente untersuchen (ein html code)
|
Re: memo komponente untersuchen (ein html code)
also
function Pos(Substr: <a href; S: Memo1): Integer; so? Sucht er damit in dem String Memo1 nach dem teilstring "<a href" ? muss ich vorher substr und S noch als string bestimmen oder sind das eigenschaften von Pos ? |
Re: memo komponente untersuchen (ein html code)
Um mittels Pos im Memo zu suchen, musst du Pos wie folgt verwenden:
Delphi-Quellcode:
Damit bekommst du dann die Position des ersten Zeichens deines SubStrings.
var
iPos: Integer; begin {...} iPos := Pos('<a href', Memo1.Lines.Text); {...} end; Gruß Mordi |
Re: memo komponente untersuchen (ein html code)
Hallo ihr beiden,
selbstverständlich kann man mittels Pos() und Copy() auf beliebige Texte zugreifen, aber hier handelt es sich um HTML. Für HTML-Dokumente gibt es einen speziellen Parser, den man über die Unit MSHTML einbinden kann. Als ersten Schritt übergibt man den aus dem Netz oder von der Platte geladenen markup text an den Parser und lässt sich ein document object model (DOM) erstellen:
Delphi-Quellcode:
Mit den Schnittstellen aus der Unit MSHTML kann man dann recht einfach auf die verschiedenen Tags zugreifen:
uses
Mshtml; function CreateDocument(const markup: string): IHTMLDocument2; var doc: OleVariant; begin Result := CoHTMLDocument.Create as IHTMLDocument2; doc := Result; doc.Open; doc.Write(markup); doc.Close; end;
Delphi-Quellcode:
Freundliche Grüße
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; |
Re: memo komponente untersuchen (ein html code)
Wenn man tatsächlich über das Suchen in der Zeichenkette gehen will lohnt ein Blick auf Regular Expressions. Damit lässt sich HTML sehr viel schöner auseinandernehmen als via Pos und Copy.
|
Re: memo komponente untersuchen (ein html code)
Es gibt auch fertige Komponenten dafür, nennt sich dann HTMLParser. Mal bei torry.net suchen. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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