Einzelnen Beitrag anzeigen

marabu

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

Re: Problem mit MSHTMLTxtRange

  Alt 28. Apr 2005, 14:12
Zitat von Benjin:
Leider wird bei meiner Implementierung stets eine EAccessViolation aufgerufen, obwohl die Funktion ohne entsprechende Schleife, also bei der Suche in nur einem Dokument einwandfrei funktioniert.
Beides ist kaum zu glauben.

Mit diesem Busy-Test hat der nachfolgende Code keine Chance je ausgeführt zu werden. Ich schlage vor du wartest, bis das Dokument geladen worden ist.

Delphi-Quellcode:
// if not FrmMultisearch.WBMultiSearch.Busy then
while FrmMultisearch.WBMultiSearch.Busy {and not UserCancel} do //
  ApplicationProcessMessages;
Und mit dieser Parameterversorgung arbeitet findText() auf einem 1 Zeichen großen Bereich. Sehr effizient, aber wenig informativ. Lass den Wert besser auf 0. Und wenn du nicht ab und zu den Suchbereich verschiebst, dann machst du den ganzen Geschwindigkeitsvorteil von oben wieder zunichte, weil immer wieder an der selben Stelle gesucht wird.

Delphi-Quellcode:
// while tr.findText(Term, 1, 0) do begin // Siehe Anmerkung 2
while tr.findText(Term, 0, 0) do begin // Suchen bis zum Ende des Textes
  inc(hitcounts[i]);
  tr.collapse(false); // Suchbereich neu festlegen
end;
Grüße vom marabu
  Mit Zitat antworten Zitat