Compartir a través de


Método ITextRange::FindText (tom.h)

Busca hasta Recuento de caracteres para el texto proporcionado por bstr. La posición inicial y la dirección también se especifican en Count y los criterios de coincidencia se proporcionan mediante Flags.

Sintaxis

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

Parámetros

bstr

Tipo: BSTR

Cadena que se va a buscar.

Count

Tipo: long

Número máximo de caracteres que se van a buscar. Puede ser uno de los siguientes.

tomForward Busca al final de la historia. Este es el valor predeterminado.
n (mayor que 0) Busca n caracteres, empezando por cpFirst. Si el propio intervalo coincide con bstr, se intenta realizar otra búsqueda desde cpFirst + 1.
n(menor que 0) Busca n caracteres hacia atrás, empezando por cpLim. Si el propio rango coincide con bstr, se intenta realizar otra búsqueda desde cpLim– 1.
0 (intervalo degenerado) La búsqueda comienza después del intervalo.
0 (intervalo no degenerado) La búsqueda está limitada al intervalo.
 

En todos los casos, si se encuentra una cadena, los límites de intervalo se cambian para que sean los de la cadena coincidente y pLength se establece igual a la longitud de la cadena. Si no se encuentra la cadena, el intervalo permanece sin cambios y pLength se establece igual a cero.

Flags

Tipo: long

Marcas que rigen las comparaciones. Puede ser 0 (valor predeterminado) o cualquier combinación de los valores siguientes.

tomMatchWord 2 Coincide con palabras completas.
tomMatchCase 4 Coincide con mayúsculas y minúsculas.
tomMatchPattern 8 Coincide con expresiones regulares.

pLength

Tipo: long*

Longitud de la cadena coincidente.

Valor devuelto

Tipo: HRESULT

El método devuelve un valor HRESULT . Si el método se realiza correctamente, devuelve S_OK. Si se produce un error en el método, devuelve S_FALSE. Para obtener más información sobre los códigos de error COM, vea Control de errores en COM.

Comentarios

El método ITextRange::FindText también puede coincidir con caracteres especiales mediante un símbolo de intercalación (^) seguido de una letra especial. Para obtener una lista de caracteres especiales, vea la lista especial disponible en el cuadro de diálogo Buscar y reemplazar de Microsoft Word. Por ejemplo, ^p coincide con la marca de párrafo siguiente. Tenga en cuenta que ^c se puede usar para representar el contenido del Portapapeles en la cadena que se va a reemplazar. Por lo tanto, el uso ^c de en la cadena de búsqueda permite buscar texto enriquecido. Para obtener más información, consulte los archivos de ayuda de Word.

Como comparación con el método ITextRange::FindText , el método ITextRange::FindTextStart busca hacia delante o hacia atrás desde la cp Start del intervalo y el método ITextRange::FindTextEnd busca hacia delante o hacia atrás desde la cp End del intervalo. Para obtener más información, consulte las descripciones de estos métodos.

A continuación se muestran varios fragmentos de código que muestran los métodos ITextRange::FindText .

Ejemplo 1. El siguiente programa de Microsoft Visual Basic para Aplicaciones (VBA) imprime todos los comentarios /* ... */ de un artículo identificado por el 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

En lugar de imprimir estos comentarios, podrían insertarse en otra instancia de edición y guardarse en un archivo, o se podrían insertar en celdas independientes de una tabla u hoja de cálculo.

Para imprimir todas las líneas que contienen una o varias apariciones de la palabra "láser", reemplace el bucle por el código siguiente:

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

Ejemplo 2. El siguiente programa imprime una lista de teléfonos, dada una historia que contiene una lista de direcciones. Las entradas de la lista de direcciones están separadas por dos o más marcas de párrafo y cada entrada tiene el siguiente formato.

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

Observe el uso del carácter ^p en el argumento de cadena FindText para buscar un par de marcas de párrafo 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

Ejemplo 3. La subrutina siguiente reemplaza todas las apariciones de la cadena, str1, en un 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

Ejemplo 4. La siguiente línea de código inserta un espacio en blanco antes de la primera aparición de un paréntesis derecho, "(", que sigue a una aparición de HRESULT.

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

Para ello, cambie el bucle If en un bucle While/Wend en la línea de código anterior. Este es un ejemplo de una macro FIND/REPLACE que no se puede ejecutar con cuadros de diálogo Buscar y reemplazar .

Requisitos

   
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado tom.h
Archivo DLL Msftedit.dll

Consulte también

Conceptual

FindTextEnd

FindTextStart

ITextRange

Referencia

Modelo de objetos de texto