ITextRange::FindText-Methode (tom.h)

Sucht bis zu Anzahl von Zeichen für den von bstr angegebenen Text. Die Startposition und Die Richtung werden ebenfalls durch Anzahl angegeben, und die Übereinstimmungskriterien werden durch Flags angegeben.

Syntax

HRESULT FindText(
  BSTR bstr,
  long Count,
  long Flags,
  long *pLength
);

Parameter

bstr

Typ: BSTR

Zu findende Zeichenfolge.

Count

Typ: long

Maximale Anzahl von zu durchsuchenden Zeichen. Dies kann einer der folgenden Sein:

tomForward Sucht bis zum Ende der Geschichte. Dies ist der Standardwert.
n (größer als 0) Sucht vorwärts nach n zeichen, beginnend bei cpFirst. Wenn der Bereich selbst mit bstr übereinstimmt, wird eine andere Suche von cpFirst + 1 versucht.
n(kleiner als 0) Sucht rückwärts nach n Zeichen, beginnend mit cpLim. Wenn der Bereich selbst mit bstr übereinstimmt, wird eine andere Suche von cpLim– 1 versucht.
0 (degenerierter Bereich) Die Suche beginnt nach dem Bereich.
0 (nicht degenerierter Bereich) Die Suche ist auf den Bereich beschränkt.
 

Wenn eine Zeichenfolge gefunden wird, werden die Bereichsgrenzwerte in die der übereinstimmenden Zeichenfolge geändert, und pLength wird auf die Länge der Zeichenfolge festgelegt. Wenn die Zeichenfolge nicht gefunden wird, bleibt der Bereich unverändert, und pLength wird auf null festgelegt.

Flags

Typ: long

Flags, die Vergleiche steuern. Es kann 0 (Standard) oder eine beliebige Kombination der folgenden Werte sein.

tomMatchWord 2 Entspricht ganzen Wörtern.
tomMatchCase 4 Entspricht der Groß-/Kleinschreibung.
tomMatchPattern 8 Entspricht regulären Ausdrücken.

pLength

Typ: long*

Die Länge der zugeordneten Zeichenfolge.

Rückgabewert

Typ: HRESULT

Die -Methode gibt einen HRESULT-Wert zurück. Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn die Methode fehlschlägt, wird S_FALSE zurückgegeben. Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung in COM.

Hinweise

Die ITextRange::FindText-Methode kann auch mit Sonderzeichen übereinstimmen, indem ein Caretzeichen (^) gefolgt von einem speziellen Buchstaben verwendet wird. Eine Liste der Sonderzeichen finden Sie in der Liste Spezial im Dialogfeld Suchen und Ersetzen von Microsoft Word. Entspricht z. ^p B. der Markierung des nächsten Absatzes. Hinweis, kann verwendet werden, ^c um den Inhalt der Zwischenablage in der zu ersetzenden Zeichenfolge darzustellen. Daher ermöglicht die Verwendung von ^c in der Suchzeichenfolge die Suche nach Rich-Text. Weitere Informationen finden Sie in den Word Hilfedateien.

Im Vergleich mit der ITextRange::FindText-Methode sucht die ITextRange::FindTextStart-Methode vorwärts oder rückwärts aus dem Start cp des Bereichs, und die ITextRange::FindTextEnd-Methode sucht vorwärts oder rückwärts aus dem End cp des Bereichs. Weitere Informationen finden Sie in den Beschreibungen dieser Methoden.

Im Folgenden finden Sie mehrere Codeausschnitte, die die ITextRange::FindText-Methoden zeigen.

Beispiel 1. Das folgende Microsoft Visual Basic for Applications -Programm (VBA) druckt alle /* ... */-Kommentare in einer Story, die durch den Bereich r identifiziert wird.

Sub PrintComments (r As ITextRange)
    r.SetRange 0, 0                                      'r = insertion pt at start of story
    Do While r.FindText("/*") And r.FindTextEnd("*/")    'Select comment
        r.MoveStart tomCharacter, 2                      'But do not include the opening or 
                                                         'closing comment brackets
        r.MoveEnd tomCharacter, -2                       
        Print r                                          'Show the folks
    Loop
End Sub

Anstatt dass diese Kommentare gedruckt werden, könnten sie in eine andere Bearbeitungs-instance eingefügt und in einer Datei gespeichert werden, oder sie könnten in separate Zellen in einer Tabelle oder einem Arbeitsblatt eingefügt werden.

Um alle Zeilen mit einem oder mehreren Vorkommen des Worts "laser" zu drucken, ersetzen Sie die Schleife durch den folgenden Code:

    While r.FindText("laser")            // Select next occurrence of "laser"
        r.Expand tomLine                // Select enclosing line    
        Print r                    // Print the line
    Wend

Beispiel 2. Das folgende Programm druckt eine Telefonliste, die eine Geschichte enthält, die eine Adressliste enthält. Die Adresslisteneinträge sind durch zwei oder mehr Absatzmarken getrennt, und jeder Eintrag hat das folgende Formular.

Person/Business Name
Address (one or more lines)
(area code) telephone number 

Beachten Sie die Verwendung des Zeichens ^p im FindText-Zeichenfolgenargument , um ein Paar aufeinanderfolgender Absatzmarken zu suchen.

Sub PrintTelephoneList (r As ITextRange)
    r.SetRange 0, 0                 // r = insertion point at start of story
    r.MoveWhile C1_WHITE            // Bypass any initial white space
    Do
        r.EndOf tomParagraph, 1     // Select next para (line): has name
        Print r                    // Print it
        Do
            r.MoveWhile C1_SPACE        // Bypass possible space chars
            If r.Char = Asc("(") Then Exit Do    // Look for start of telephone #
        Loop While r.Move(tomParagraph)    // Go to next paragraph
        r.EndOf tomParagraph, 1        // Select line with telephone number
        Print r                    // Print it
    Loop While r.FindText("^p^p")        // Find two consecutive para marks
End Sub

Beispiel 3. Die folgende Unterroutine ersetzt alle Vorkommen der Zeichenfolge str1 in einem Bereich durch str2:

Sub Replace ( tr As ITextRange, str1 As String, str2 As String )
    Dim r As ITextRange
    r = tr.Duplicate                // Copy tr parameters to r
    r.End = r.Start                    // Convert to insertion point at Start
    While r.FindText(str1, tr.End - r.End)        // Match next occurrence of str
        r = str2                // Replace it with rep
    Wend                        // Iterate till no more matches
End Sub

Beispiel 4. In der folgenden Codezeile wird vor dem ersten Vorkommen einer rechten Klammer "("" ein leerer Text eingefügt, der auf ein Vorkommen von HRESULT folgt.

    If r.FindText("HRESULT") And r.FindText("(") Then r = " ("

Ändern Sie dazu in der obigen Codezeile die If-Schleife in eine While/Wend-Schleife. Dies ist ein Beispiel für ein FIND/REPLACE-Makro , das nicht mit den Dialogfeldern Suchen und Ersetzen ausgeführt werden kann.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile tom.h
DLL Msftedit.dll

Siehe auch

Konzept

FindTextEnd

FindTextStart

ITextRange

Referenz

Textobjektmodell