En Delphi 2009 o posterior (Unicode), ¿existen funciones incorporadas o pequeñas rutinas escritas en alguna parte que va a hacer un razonablemente eficiente búsqueda de la palabra entera en que proporciona los delimitadores que definen la palabra, por ejemplo:¿Existe una función eficiente de búsqueda de palabras completas en Delphi?
function ContainsWord(Word, Str: string): boolean;
const { Delim holds the delimiters that are on either side of the word }
Delim = ' .;,:(){}"/\<>!?[]'#$91#$92#$93#$94'-+*='#$A0#$84;
donde:
Word: string; { is the Unicode string to search for }
Str: string; { is the Unicode string to be searched }
Sólo necesito que esto devuelve un valor verdadero o falso si la "Palabra" se encuentra en la cadena.
Debe haber algo para esto en alguna parte, porque el Diálogo de Buscar estándar tiene "Coincidir palabra completa solamente" como una de sus opciones.
¿Cómo se implementa normalmente (o mejor)?
Conclusión:
respuesta de RRUZ era perfecto. La rutina SearchBuf era justo lo que necesitaba. Incluso puedo acceder a la rutina de StrUtils, extraer el código y modificarlo para adaptarlo a mis requisitos.
Me sorprendió encontrar que SearchBuf no busca primero la palabra y luego busca los delimitadores. En su lugar, recorre los caracteres de la cadena uno a la vez buscando un delimitador. Si encuentra uno, entonces busca la cadena y otro delimitador. Si no lo encuentra, busca otro delimitador. ¡Por la eficiencia, eso es muy inteligente!
¡Bonito! Ahora publicaste tu solución en tu propio blog en: http://theroadtodelphi.wordpress.com/2009/11/05 y la encontré mientras investigaba más. Gracias por la información adicional que proporciona allí. – lkessler
'ExistWordInString ('Delphi', 'Delphi' [soWholeWord, soDown]);' falla. Consulte [Resultado inesperado de SearchBuf soWholeWord] (http://stackoverflow.com/q/25877986/576719). –