Función que devuelva la posición del primer carácter que no esté en la máscara de bus
Buenas, pues eso, hay alguna función en C para buscar unos caracteres en una cadena y que devuelve la posición de la primera o última de cualquier carácter pero yo quiero lo contrario, o sea, Supongamos que la función se llama buscar, pues:
Buscar("abc", "acabo"); Devolviese la posición del carácter 'o' ya que no está entre los caracteres indicados en la máscara de busqueda, no sé si me explico. ¿Conocen algo así? Lo que quiero hacer es filtrar lo que se pegue desde el portapapeles a un tedit y que solo sean caracteres hexadecimales. |
Hola.
Si se diera que hay dos o más caracteres que no existen en la máscara de búsqueda, ¿ Cuál debería devolver ? Saludos :) |
Eso es lo de menos ya que si hay uno no válido la idea es no permitir el pegado.
|
Podrías usar una expresión regular para hacer la busqueda.
El valor de búsqueda lo conviertes a un pattern válido. Por ej, "abc" podría ser "[a]|[b]|[c]". De esa manera encontrará "acab" de "acabo" Ejemplo colores hexadecimales: Texto de busqueda: "#0123456789ABCDEF" Pattern: "[#]|[0]|[1]|[2]|[3]|[4]|[5]|[6]|[7]|[8]|[9]|[A]|[b]|[C]|[D]|[E]|[F]" (Que podría resumirse en "[#]|[0-9]|[A-F]") Resultados Código:
ORIGEN RESULTADO |
Pero yo no quiero filtrar, lo que quiero es que si el formato no es válido no se pegue nada de nada.
Podría usar strspn para ello pero si la vcl tiene algo así me ahorro de añadir la librería string solo para eso. |
Hola.
No conozco alguna función de la VCL que haga lo que buscas. Y si deseas prescindir de la librerá string, tendrías que hacer una función en C que lo realize, vg.r.: Código PHP:
Código PHP:
y Código PHP:
Saludos :) |
Bueno, al final lo he pensado mejor y voy a hacer que imprima solo caracteres válidos pero la cosa es que consigo filtrarlo pero me lo muestra al final de lo que pego con Ctrl + V en vez de sustituir lo que pego por lo filtrado. Tengo esto:
Código PHP:
|
Lo del menú contextual lo he solucionado con mi propio popupmenu y gestionando ahí pero lo de Ctrl+V no lo consigo.
|
La franja horaria es GMT +2. Ahora son las 00:58:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi