Condividi tramite


Metodo ITextRange::FindText (tom.h)

Cerca fino al numero di caratteri per il testo specificato da bstr. La posizione iniziale e la direzione sono specificate anche da Count e i criteri di corrispondenza vengono specificati da Flag.

Sintassi

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

Parametri

bstr

Tipo: BSTR

Stringa da trovare.

Count

Tipo: long

Numero massimo di caratteri da cercare. Può essere una delle seguenti.

tomForward Cerca alla fine della storia. Si tratta del valore predefinito.
n (maggiore di 0) Cerca n chars, a partire da cpFirst. Se l'intervallo stesso corrisponde a bstr, viene effettuato un altro tentativo di ricerca da cpFirst + 1.
n(minore di 0) Cerca n chars all'indietro, a partire da cpLim. Se l'intervallo stesso corrisponde a bstr, viene tentata un'altra ricerca da cpLim– 1.
0 (intervallo degenerato) La ricerca inizia dopo l'intervallo.
0 (intervallo non generato) La ricerca è limitata all'intervallo.
 

In tutti i casi, se viene trovata una stringa, i limiti dell'intervallo vengono modificati in modo che corrispondano a quelli della stringa corrispondente e pLength è impostato uguale alla lunghezza della stringa. Se la stringa non viene trovata, l'intervallo rimane invariato e pLength è impostato su zero.

Flags

Tipo: long

Flag che regolano i confronti. Può essere 0 (impostazione predefinita) o qualsiasi combinazione dei valori seguenti.

tomMatchWord 2 Trova la corrispondenza con parole intere.
tomMatchCase 4 Trova la corrispondenza tra maiuscole e minuscole.
tomMatchPattern 8 Trova la corrispondenza con le espressioni regolari.

pLength

Tipo: long*

Lunghezza della stringa corrispondente.

Valore restituito

Tipo: HRESULT

Il metodo restituisce un valore HRESULT . Se il metodo ha esito positivo, restituisce S_OK. Se il metodo ha esito negativo, restituisce S_FALSE. Per altre informazioni sui codici di errore COM, vedere Gestione degli errori in COM.

Commenti

Il metodo ITextRange::FindText può corrispondere anche a caratteri speciali usando un cursore (^) seguito da una lettera speciale. Per un elenco di caratteri speciali, vedere l'elenco Speciale disponibile nella finestra di dialogo Microsoft Word Trova e sostituisci. Ad esempio, ^p corrisponde al segno di paragrafo successivo. Nota, ^c può essere usato per rappresentare il contenuto degli Appunti nella stringa da sostituire. Pertanto, l'uso ^c nella stringa di ricerca consente di cercare testo rtf. Per altri dettagli, vedere i file della Guida di Word.

Come confronto con il metodo ITextRange::FindText , il metodo ITextRange::FindTextStart esegue una ricerca avanti o indietro rispetto alla cp Start dell'intervallo e il metodo ITextRange::FindTextEnd esegue una ricerca avanti o indietro rispetto alla cp End dell'intervallo. Per altri dettagli, vedere le descrizioni di questi metodi.

Di seguito sono riportati diversi frammenti di codice che mostrano i metodi ITextRange::FindText .

Esempio n. 1. Il programma Microsoft Visual Basic, Applications Edition (VBA) seguente stampa tutti i commenti /* ... */ in una storia identificata dall'intervallo r.

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

Anziché stampare questi commenti, possono essere inseriti in un'altra istanza di modifica e salvati in un file oppure possono essere inseriti in celle separate in una tabella o in un foglio di calcolo.

Per stampare tutte le righe contenenti una o più occorrenze della parola "laser", sostituire il ciclo con il codice seguente:

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

Esempio n. 2. Il seguente programma stampa un elenco telefonico, dato un brano che contiene un elenco di indirizzi. Le voci dell'elenco indirizzi sono separate da due o più segni di paragrafo e ogni voce ha il formato seguente.

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

Si noti l'uso del carattere ^p nell'argomento stringa FindText per individuare una coppia di segni di paragrafo consecutivi.

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

Esempio 3. La subroutine seguente sostituisce tutte le occorrenze della stringa str1 in un intervallo di 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

Esempio 4. La riga di codice seguente inserisce un valore vuoto prima della prima occorrenza di una parentesi destra, "(", che segue un'occorrenza di HRESULT.

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

A tale scopo, modificare il ciclo If in while/wend nella riga di codice precedente. Questo esempio di macro FIND/REPLACE non può essere eseguita con le finestre di dialogo Trova e Sostituisci .

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione tom.h
DLL Msftedit.dll

Vedi anche

Informazioni concettuali

FindTextEnd

FindTextStart

ITextRange

Riferimento

Modello a oggetti di testo