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
Riferimento