Método ITextRange::FindText (tom.h)
Pesquisa até Contagem de caracteres para o texto dado por bstr. A posição inicial e a direção também são especificadas por Count e os critérios de correspondência são dados por Sinalizadores.
Sintaxe
HRESULT FindText(
BSTR bstr,
long Count,
long Flags,
long *pLength
);
Parâmetros
bstr
Tipo: BSTR
Cadeia de caracteres a ser encontrada.
Count
Tipo: long
Número máximo de caracteres a serem pesquisados. Pode ser um dos seguintes.
tomForward | Pesquisa até o final da história. Esse é o valor padrão. |
n (maior que 0) | Pesquisa n caracteres , começando por cpFirst. Se o próprio intervalo corresponder a bstr, outra pesquisa será tentada de cpFirst + 1. |
n(menor que 0) | Pesquisa para trás em busca de n caracteres, começando de cpLim. Se o próprio intervalo corresponder a bstr, outra pesquisa será tentada de cpLim– 1. |
0 (intervalo degenerado) | A pesquisa começa após o intervalo. |
0 (intervalo não descrigênrico) | A pesquisa é limitada ao intervalo. |
Em todos os casos, se uma cadeia de caracteres for encontrada, os limites de intervalo serão alterados para serem os da cadeia de caracteres correspondente e pLength será definido como igual ao comprimento da cadeia de caracteres. Se a cadeia de caracteres não for encontrada, o intervalo permanecerá inalterado e pLength será definido como zero.
Flags
Tipo: long
Sinalizadores que regem comparações. Pode ser 0 (o padrão) ou qualquer combinação dos valores a seguir.
tomMatchWord | 2 | Corresponde a palavras inteiras. |
tomMatchCase | 4 | Corresponde ao caso. |
tomMatchPattern | 8 | Corresponde a expressões regulares. |
pLength
Tipo: long*
O comprimento da cadeia de caracteres correspondente.
Valor retornado
Tipo: HRESULT
O método retorna um valor HRESULT . Se o método for bem-sucedido, ele retornará S_OK. Se o método falhar, ele retornará S_FALSE. Para obter mais informações sobre códigos de erro COM, consulte Tratamento de erros em COM.
Comentários
O método ITextRange::FindText também pode corresponder a caracteres especiais usando um cursor (^) seguido de uma letra especial. Para obter uma lista de caracteres especiais, consulte a lista Especial disponível na caixa de diálogo Localizar e Substituir do Microsoft Word. Por exemplo, ^p
corresponde à próxima marca de parágrafo. Observe que ^c
pode ser usado para representar o conteúdo da Área de Transferência na cadeia de caracteres a ser substituída. Portanto, usar ^c
na cadeia de caracteres de localização permite que você pesquise rich text. Para obter mais detalhes, consulte os arquivos da Ajuda Word.
Como comparação com o método ITextRange::FindText , o método ITextRange::FindTextStart pesquisa para frente ou para trás do cp Inicial do intervalo e o método ITextRange::FindTextEnd pesquisa para frente ou para trás do cp Final do intervalo. Para obter mais detalhes, consulte as descrições desses métodos.
Veja a seguir vários snippets de código que mostram os métodos ITextRange::FindText .
Exemplo nº 1. O programa microsoft Visual Basic for Applications (VBA) a seguir imprime todos os comentários /* ... */ em uma história identificada pelo intervalo 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
Em vez desses comentários serem impressos, eles podem ser inseridos em outra instância de edição e salvos em um arquivo, ou podem ser inseridos em células separadas em uma tabela ou planilha.
Para imprimir todas as linhas que contêm uma ou mais ocorrências da palavra "laser", substitua o loop pelo seguinte código:
While r.FindText("laser") // Select next occurrence of "laser"
r.Expand tomLine // Select enclosing line
Print r // Print the line
Wend
Exemplo nº 2. O programa a seguir imprime uma lista telefônica, considerando uma história que contém uma lista de endereços. As entradas da lista de endereços são separadas por duas ou mais marcas de parágrafo e cada entrada tem o formulário a seguir.
Person/Business Name
Address (one or more lines)
(area code) telephone number
Observe o uso do caractere ^p
no argumento de cadeia de caracteres FindText para localizar um par de marcas de parágrafo consecutivas.
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
Exemplo nº 3. A sub-rotina a seguir substitui todas as ocorrências da cadeia de caracteres, str1, em um intervalo por 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
Exemplo nº 4. A linha de código a seguir insere um em branco antes da primeira ocorrência de um parêntese direito, "(", que segue uma ocorrência de HRESULT.
If r.FindText("HRESULT") And r.FindText("(") Then r = " ("
Para fazer isso para todas essas ocorrências, altere o loop Se em um While/Wend na linha de código acima. Este é um exemplo de uma macro FIND/REPLACE que não pode ser executada com caixas de diálogo Localizar e Substituir .
Requisitos
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | tom.h |
DLL | Msftedit.dll |
Confira também
Conceitual
Referência