AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi memo komponente untersuchen (ein html code)
Thema durchsuchen
Ansicht
Themen-Optionen

memo komponente untersuchen (ein html code)

Ein Thema von andiak2 · begonnen am 23. Jun 2008 · letzter Beitrag vom 23. Jun 2008
Antwort Antwort
andiak2

Registriert seit: 23. Jun 2008
4 Beiträge
 
#1

memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:01
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:
procedure TForm1.BTestClick(Sender: TObject);
var s : string;
begin
  s := IdHTTP.Get(Edit1.Text);
  Memo.Lines.Text := s;
end;
Und hiermit kann ich die seite als html datei speichern
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;
  Mit Zitat antworten Zitat
Mordilion

Registriert seit: 18. Mär 2004
Ort: Niederkassel
26 Beiträge
 
RAD-Studio 2009 Arc
 
#2

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:12
Du brauchst folgende Funktionen (die in Delphi enthalten sind) um soetwas zu realisiere:

- Hier im Forum suchenPos
- Hier im Forum suchenPosEx (Müsste vielleicht auch selbst geschrieben werden. Kommt auf deine Delphi-Version an)
- Hier im Forum suchenCopy

Damit solltest du schonmal sehr weit kommen.


Gruß
Mordi
Für das große Chaos haben wir Computer. Die übrigen Fehler machen wir von Hand.
  Mit Zitat antworten Zitat
andiak2

Registriert seit: 23. Jun 2008
4 Beiträge
 
#3

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:17
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 ?
  Mit Zitat antworten Zitat
Mordilion

Registriert seit: 18. Mär 2004
Ort: Niederkassel
26 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:26
Um mittels Pos im Memo zu suchen, musst du Pos wie folgt verwenden:

Delphi-Quellcode:
var
  iPos: Integer;
begin
  {...}
  iPos := Pos('<a href', Memo1.Lines.Text);
  {...}
end;
Damit bekommst du dann die Position des ersten Zeichens deines SubStrings.


Gruß
Mordi
Für das große Chaos haben wir Computer. Die übrigen Fehler machen wir von Hand.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:33
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:
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;
Mit den Schnittstellen aus der Unit MSHTML kann man dann recht einfach auf die verschiedenen Tags zugreifen:

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;
Freundliche Grüße
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#6

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:35
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.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#7

Re: memo komponente untersuchen (ein html code)

  Alt 23. Jun 2008, 16:41
Es gibt auch fertige Komponenten dafür, nennt sich dann HTMLParser. Mal bei torry.net suchen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz