Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   WebBrowser Html Wort für Wort auslesen (https://www.delphipraxis.net/171843-webbrowser-html-wort-fuer-wort-auslesen.html)

Gerd01 28. Nov 2012 09:20

WebBrowser Html Wort für Wort auslesen
 
Hat jemand eine Info wie ich ein Innerhtml des Webbrowser Wort für Wort durchgehen kann, gegebenenfalls kennzeichen und/oder ersetzen kann? Ziel ist es eine Rechtschreibprüfung mit THunSpell direkt in einer Html durchzuführen.
Für eure Hilfe wäre ich sehr dankbar.

Gruß Gerd

Gerd01 23. Dez 2012 09:36

AW: WebBrowser Html Wort für Wort auslesen
 
Hat niemand eine Idee wie das funktionieren könnte?:(

Volker Z. 23. Dez 2012 13:31

AW: WebBrowser Html Wort für Wort auslesen
 
Hallo,

Zugriff auf den Text einer HTML-Seite bekommst Du folgendermaßen:
Delphi-Quellcode:
uses
  [...] MSHTML;

procedure DoSomething;
var
  r : IHTMLTxtRange;
  s : WideString;
begin
  r := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
  s := r.text;
  // weitere Funktionalität
end;
Text markieren geht dann so:

Delphi-Quellcode:
  p := 0; // Position ab der im Text gesucht werden soll
  t := 'some text';
 
  r.moveStart('character', 1);
  r.moveEnd ('textedit', 0);
  r.moveStart ('character', -1);
 
  if r.findText (t, p, 0) then
    begin
      r.select;
      // und wenn Du ersetzen willst
      r.pasteHTML ('replace some text');
    end;
Nachtrag: Natürlich solltest Du vorher WebBrowser1.Document <> nil etc. prüfen!

Gruß

Gerd01 24. Dez 2012 07:00

AW: WebBrowser Html Wort für Wort auslesen
 
Vielen Dank für dein Info.
Und die Variable p verschiebt sich bis man ans Ende des Textes kommt?

Volker Z. 24. Dez 2012 09:51

AW: WebBrowser Html Wort für Wort auslesen
 
Zitat:

Und die Variable p verschiebt sich bis man ans Ende des Textes kommt?
So ist es. Die letzte Fundstelle merken und den Text ab dieser Stelle durchsuchen.

Gruß

Gerd01 28. Jan 2013 07:49

AW: WebBrowser Html Wort für Wort auslesen
 
Mit: if r.findText (t, p, 0) then..

kann man nicht wortweise durch einen HTML-Text durchgehen, sondern man kann nur nach bestimmten Wörtern suchen.

Ich suche eine Routine mit der man Wort für Wort durch den Text steppen kann.

Volker Z. 28. Jan 2013 20:15

AW: WebBrowser Html Wort für Wort auslesen
 
Hallo,

Du kannst mal versuchen, ob folgender Code auf Deine Anforderungen anpassbar ist.

Delphi-Quellcode:
uses
  MSHTML;

procedure TForm4.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate ('some-url.htm');
end;

procedure TForm4.Button2Click(Sender: TObject);
var
  r0, r1 : IHTMLTxtRange;
  t : string;
  l : Integer;
begin
  r0 := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
  r0.moveStart ('textedit', 0);

  while r0.text <> '' do
    begin
      r1 := r0.duplicate;
      r0.moveStart ('word', 1);
      r1.setEndPoint ('EndToStart', r0);

      t := r0.text;
      while (t <> '') and (t [1] in [#9, #10, #13]) do
        begin
          r0.moveStart ('character', 1);
          t := r0.text
        end;

      t := r1.text;
      if (t = '') then
        Continue;

      l := Length (t);
      while (t <> '' ) and (t [l] in [#9, #32]) do
        begin
          r1.moveEnd ('character', -1);
          Delete (t, l, 1);
          Dec (l)
        end;

      if l = 0 then
        Continue;

      if (l = 1) and (t [1] in ['.', ',', '!', '?']) then
        Continue;

      // ggf. auf Anhäufung ungültiger Zeichen o. ä. prüfen

      try
        r1.select;
        Application.ProcessMessages;
        Sleep (200)
      except
        // ggf. Log
        // Text in einem HTML-Container mit style="display:none / visibility:hidden" konnten nicht selektiert werden
      end;
    end;

  r0.select
end;
Gruß

Gerd01 29. Jan 2013 17:10

AW: WebBrowser Html Wort für Wort auslesen
 
Prima danke,
das ist genau das was ich suche.

Ich baue einen Hunspell-Spellchecker für HTML-Texte, dafür benötige ich das.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 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