Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar Ingreso De Letras En Un Edit (https://www.clubdelphi.com/foros/showthread.php?t=54496)

sdiaz1983 20-03-2008 19:45:21

Validar Ingreso De Letras En Un Edit
 
Código Delphi [-]


unit valletra;
interface
uses Classes, DBTables, QControls, SysUtils,Windows, Messages, Variants,Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
Tvalletra= class(TWidgetControl)
private
letr: String;
public
property letra: String read letr write letr;
procedure validarn(letra: String);
end;
implementation
procedure TValletra.validarn(letra:String);
var i: integer;
var b: String;
begin
letr:=Letra;
for i:=1 to length(letra) do
begin
if ((letra[i] in ['a'..'z'])and (letra[i] in ['A'..'Z'])) then
b:='Verdadero'
else
b:='Falso';
end;
showmessage(''+b+'');
end;
end.






Buen dia.

En el codigo que les adjunto estoy intentando de elaborar una clase que me valide si le ingreso letras el valor de b (tipo String) retorne verdadero, de lo contrario b sea falso, recorriendo cada letra por medio de un ciclo.

El problema que tengo es haciendo pruebas de que valor me retorna b, siempre me retorna Falso, ya sea si el ingreso letras o no, quisiera por favor si me pueden ayudar que error tengo, o que correcciones me sugieren con respecto a esa clase.

Mil Gracias

Sergio

MAXIUM 20-03-2008 20:01:36

Porque si ingreso 'a' por ejemplo, te dara verdadero and falso = falso.

Es decir, estas preguntando si 'a' se encuentra el el grupo de la 'a..z' y si además se encuentra en el grupo de 'A..Z', obviamente no puede estar en ambos por eso te da falso.

Solución: cambiar and por or.

MaMu 20-03-2008 20:09:25

Fijate algo asi, como para no deformar mucho lo que haz hecho tu

Código Delphi [-]
function ValidaEdit(cadena:string):string;
var i:integer;
begin
  for i:=1 to Length(cadena) do
    begin
    if ((cadena[i] in ['a'..'z'])or(cadena[i] in ['A'..'Z']))
      then Result:='Verdadero'
       else Result:='Falso';
    end;
end;

y un ejemplo de llamada

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ValidaEdit(Edit1.Text));
end;

Ojo con las funciones lógicas, debes aplicarlas utilizando lógica simbólica y cálculo proposicional

Saludos

sdiaz1983 20-03-2008 20:13:28

Otra Duda
 
No me habia fijado en eso, mil gracias por su aclaracion, ya hice esas correcciones.

Tengo otra duda, por ejemplo si yo ingreso 8u o ?5f, se supone que me deberia que botar falso, ya que en ninguno de los casos me tiene que admitir que me ingrese otra caracter diferente de la a la Z, no se si toque que hacer otra correcion de esa clase, o si hay otra manera de plantearla la tendre en cuenta, soy nuevo en delphi.

Agradezco toda la ayuda que me pueda prestar con respecto a eso.

gRACIAS

MaMu 20-03-2008 20:20:17

No entiendo muy bien el punto. Lo que quieres hacer es un Edit que solo admita letras y no numeros?

Porque de ser asi, podrías usar esto en el evento OnKeyPress del Edit

Código Delphi [-]
   if ( StrScan('abcdefghijklmnopqrstuvwxyz',Key) <> nil ) or
      ( Key = Char(VK_BACK) ) 
  then begin
     //lo que quieras...

  end 
  else begin
     Key := #0;
  end;

No tengo Delphi a mano, pero quedaria algo asi

Saludos

sdiaz1983 20-03-2008 20:22:05

Respuesta
 
Lo que quiero hacer es que solo me admita ingresar letras en el edit, no combinaciones por ejemplo de letras con numeros ó letras con caracteres distintos solo letras .

MaMu 20-03-2008 20:27:07

Cita:

Empezado por sdiaz1983 (Mensaje 274403)
Lo que quiero hacer es que solo me admita ingresar letras en el edit, no combinaciones por ejemplo de letras con numeros ó letras con caracteres distintos solo letras .

SOLUCION


Saludos

sdiaz1983 20-03-2008 20:38:41

Respuesta
 
Mil Gracias Uan Vez Mas, Intentar Este Codigo, Cualquier Cosa Le Aviso.

Gracias

BlueSteel 20-03-2008 21:30:38

solo queria mencionar que la JVCL tiene un componente que realiza lo que tu necesitas.. tanto para numero como letras

Paleta Jv Edits

Componente TJvValidadeEdit y TJvEdit

Salu2

sdiaz1983 21-03-2008 01:11:32

Jv
 
Una Pregunta, Este Componente Del Que Habla Ya Se Encuentra En Delphi O Toca Descargarlo, Si Se Encuentra Por Favor Digame En Donde Y Si Toca Descargarlo Por Favor Indiqueme Todo Para Poderlo Descargar.

Mil Gracias Una Vez Mas A Usted Y A Todos.

Dios Los Bendiga

sdiaz1983 21-03-2008 01:16:33

Codigo Final Clase
 
Compañeros del foro, quiero mostrarles el codigo de la clase que les comente, ya me funciona, de todos modos una vez mas mil gracias a todos y que Dios los proteja a ustedes por su paciencia, mil gracias.

Código Delphi [-]
unit valletra;
interface
uses Classes, DBTables, QControls, SysUtils,Windows, Messages, Variants,Graphics, Controls, Forms, Dialogs, StdCtrls;
  Type
  Tvalletra= class(TWidgetControl)
  private
   letr: String;
   bandera: Integer;
  public
  property letra: String read letr write letr;
  property band: Integer read bandera write bandera;
  procedure validarn(letra: String);
  end;
implementation
  procedure TValletra.validarn(letra:String);
  var b: String;
  var i: Integer;
  var c: Integer;
  begin
  letr:=Letra;
  bandera:=c;
  c:=0;
   for i:=1 to length(letra) do
     begin
     if not ((letra[i] in ['a'..'z'])or (letra[i] in ['A'..'Z'])) then
       begin
       c:=c+1;
       end;
     end;
      bandera:=c;
      if(c<>0) then
      MessageDlg('INGRESO INCORRECTO',mtError,[mbOk],0);
  end;
end.


La franja horaria es GMT +2. Ahora son las 03:15:12.

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