![]() |
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 |
AW: WebBrowser Html Wort für Wort auslesen
Hat niemand eine Idee wie das funktionieren könnte?:(
|
AW: WebBrowser Html Wort für Wort auslesen
Hallo,
Zugriff auf den Text einer HTML-Seite bekommst Du folgendermaßen:
Delphi-Quellcode:
Text markieren geht dann so:
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;
Delphi-Quellcode:
Nachtrag: Natürlich solltest Du vorher WebBrowser1.Document <> nil etc. prüfen!
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; Gruß |
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? |
AW: WebBrowser Html Wort für Wort auslesen
Zitat:
Gruß |
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. |
AW: WebBrowser Html Wort für Wort auslesen
Hallo,
Du kannst mal versuchen, ob folgender Code auf Deine Anforderungen anpassbar ist.
Delphi-Quellcode:
Gruß
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; |
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:39 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