AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke WebBrowser Html Wort für Wort auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

WebBrowser Html Wort für Wort auslesen

Ein Thema von Gerd01 · begonnen am 28. Nov 2012 · letzter Beitrag vom 29. Jan 2013
Antwort Antwort
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#1

WebBrowser Html Wort für Wort auslesen

  Alt 28. Nov 2012, 09:20
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
  Mit Zitat antworten Zitat
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#2

AW: WebBrowser Html Wort für Wort auslesen

  Alt 23. Dez 2012, 09:36
Hat niemand eine Idee wie das funktionieren könnte?
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: WebBrowser Html Wort für Wort auslesen

  Alt 23. Dez 2012, 13:31
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ß
Volker Zeller

Geändert von Volker Z. (23. Dez 2012 um 14:34 Uhr)
  Mit Zitat antworten Zitat
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#4

AW: WebBrowser Html Wort für Wort auslesen

  Alt 24. Dez 2012, 07:00
Vielen Dank für dein Info.
Und die Variable p verschiebt sich bis man ans Ende des Textes kommt?
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: WebBrowser Html Wort für Wort auslesen

  Alt 24. Dez 2012, 09:51
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ß
Volker Zeller
  Mit Zitat antworten Zitat
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#6

AW: WebBrowser Html Wort für Wort auslesen

  Alt 28. Jan 2013, 07:49
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.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#7

AW: WebBrowser Html Wort für Wort auslesen

  Alt 28. Jan 2013, 20:15
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ß
Volker Zeller
  Mit Zitat antworten Zitat
Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#8

AW: WebBrowser Html Wort für Wort auslesen

  Alt 29. Jan 2013, 17:10
Prima danke,
das ist genau das was ich suche.

Ich baue einen Hunspell-Spellchecker für HTML-Texte, dafür benötige ich das.
  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 19:08 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