Diferencía entre mayúsculas y minúsculas
Buen dia Colegas!!
Solicitando de su ayuda....soy nuevo en el foro y estoy iniciando a programar en delphi...soy novato. Les cuento tengo un programa al cual se accede al sistema por medio de un login, ya lo tengo funcionando, el problema que tengo es que no diferencía entre mayúsculas y minúsculas (es decir uso un password almacenado como "Hola", pero si escribo todo con mayúscula o minúscula aún me permite acceso, quisiera saber como puedo hacer para que el password lo escriba exactamente como se almaceno), uso una BD MySQL ¿Alguna sugerencia? De ante mano agradezco su ayuda. Este es el codigo de mi login:
|
Los query no suelen ser case-sensitive por defecto y MySQL no es la excepción. Debes convertir los string usando collates.
Fuente |
Cita:
Y recuerda poner los tags al código fuente, ejemplo: Gracias :) |
como convertiria los strings a collates? la verdad aun no domino delphi estoy iniciando...les agradeceria su ayuda :)
|
Aunque la búsqueda puede ser insensible a mayúsculas y minúsculas, dependiendo del collate usado, los valores almacenados en la base se regresan tal como fueron capturados. Entonces, en lugar de buscar un usuario con nombre de usuario y contraseña determinada, puedes simplemente buscarlo por nombre de usuario y comparar las contraseñas en tu código delphi. Algo así:
LineComment Saludos |
What, en que momento sucedio esto? Ok, basicamente esto es configuración de tu base de datos o tabla, esto no deberia de ser necesario ya que por logica "ABC" no es igual "abc", sunpogo que en algún punto los estandares SQL se orientaron menos a la logica y mas a las necesidades comunes tratando de facilitar las consultas "upper(campo) no veo mayor problema pero bueno".
El tema en distintas bases de datos es la definición de la base o las tablas definiendo el "COLLATE", puede variar dependiendo de la base de datos y ya en las cosultas se puede aplicar la sentencia si queremos o no distinguir mayusculas y minusculas. Tomado de desarrollo web.
Saludos. |
si me funciono tu ayuda #roman para acceder....pero el detalle es que no es sensible a mayusculas y minusculas y eso es lo que quiero realizar...alguna idea? ando un poco deshubicado con esto de la sensibilidad de mayusculas y minusculas. se los agradeceria mucho en verdad :)
|
Podes comparar los string usando la funcion AnsiCompareStr
|
Comienzan
// comparar dos cadenas obviamente diferentes CompareStrings ( "Hola", "mundo"); // comparar cadenas idénticas CompareStrings ( 'Hola 2 tú "," Hola 2 le'); // Las letras mayúsculas siguen minúsculas en Delphi CompareStrings ( 'ABC', 'abc'); // Todas las cartas siguen los números en Delphi CompareStrings ( 'abc', '123'); fin; // Compara dos cadenas, y mostrar que es más grande que los otros TForm1.CompareStrings procedimiento ( cadena1 const, string2: string); var resultado: Integer; comience // Compara algunas cadenas resultado: = AnsiCompareStr (cadena1, cadena2); si el resultado <0 entonces ShowMessage (cadena1 + '<' + cadena2); si el resultado = 0 entonces ShowMessage (cadena1 + '=' + cadena2); si el resultado> 0 entonces ShowMessage (cadena1 + '>' + cadena2); fin; No entendi como aplicarlo al codigo del login y que sea sensible a las mayusculas y minusculas...no hubico como compararlos...alguien podria ayudarme. if FMCorp.qry_login.FieldByName('contrasenia').AsString = txtPass.Text then begin MessageBox(Handle, 'La contraseña es correcta!', 'LoyalCorp', MB_ICONINFORMATION+MB_OK); este codigo no funciona para la sensibilidad de mayusculas y minusculas. |
Te puse un ejemplo de cómo hacerlo en el query, si el query no te devuelve registros es que no coincide la contraseña.
Saludos. |
|
La franja horaria es GMT +2. Ahora son las 19:00:25. |
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