Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo reconocer si los caracteres 'Ñ' y 'ñ' están en una cadena? (https://www.clubdelphi.com/foros/showthread.php?t=96309)

rrf 24-07-2023 13:05:28

¿Cómo reconocer si los caracteres 'Ñ' y 'ñ' están en una cadena?
 
Hola a tod@s.

Tengo un pequeño problema con el reconocimiento de los caracteres 'Ñ' y 'ñ' en una cadena y lo expongo por si me puedes ayudar.

En Lazarus 2.2.6 , en una función que recibe como parámetro un String de texto (cadena), se leen todos los caracteres de esa cadena, actuando de forma diferente en función de cual es el caracter leido.

Todo funciona normalmente con los caracteres del alfabeto inglés; aunque no reconoce la comparación con los caracteres 'Ñ' o 'ñ'.

Este es el código que utilicé:


Código Delphi [-]
  
for i := 1 to length(cadena) do
  begin
  
    case upcase(cadena[i]) of

        'A': valor := 1;
        'B': valor := 2;
    
    // Lo intenté en esta parte con 'Ñ' y no funcionó
    
        'Y': valor := 10;
        'Z': valor := 7;
    
    
    end;

       // Así tampoco funciona
    if ( (cadena[i] = 'Ñ') or (cadena[i] = 'ñ') )
    then
      begin
        // ...
      end;

  end;

¿Sabes como se puede saber si las letras 'ñ' o 'Ñ' aparecen en el String?.

Muchas gracias de antemano.

Saludos.

Casimiro Notevi 24-07-2023 13:58:29

Recuerda que usa utf8, por lo que Ñ lo mismo es el caracter 195, por ejemplo.

rrf 24-07-2023 19:50:37

Gracias Casimiro.

Me has dado la pista para encontrar la solución:

Añadiendo LazUTF8 en el uses, usando la función UTF8CompareStr , que está documentada en:

https://lazarus-ccr.sourceforge.io/d...omparestr.html

He podido hacer una comparación que me permitirá diferenciar si es una 'Ñ', una 'ñ' u otro caracter. Aún no lo he hecho, aunque las pruebas me salieron bien y todo indica que funcionará.

Saludos.

Casimiro Notevi 24-07-2023 20:18:14

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 09:01:21.

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