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

FindTextEnd

FindTextStart

ITextRange

Referência

Modelo de objeto de texto