Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Red face Mi rutina para validar ingreso de datos

Saludos amigos, aquí comparto mi rutina para validar de forma sencilla el ingreso de un conjunto personalizado de datos en un componente TEdit:

Código Delphi [-]
function TFunciones.ValidarEntrada(Key:char; tipoEntrada: string):char;
begin
  if tipoEntrada='SoloLetras' then
  begin
    if not (key in ['a'..'z','A'..'Z',' ', #7, #8, #13]) then Result := #0
    else Result:=key;
  end;
  if tipoEntrada='SoloNumerosEnteros' then
  begin
    if not (key in [#8,'0'..'9','+','-',#13]) then Result:=#0
    else Result:=key;
  end;
  if tipoEntrada='SoloNumerosDecimales' then
  begin
    if not (Key in ['0'..'9','.',#8]) then Result:=#0
    else Result:=key;
  end;
  if tipoEntrada='LetrasYNumeros' then
  begin
    if not (Key in ['0'..'9','.','a'..'z','A'..'Z',' ', #7, #8]) then Result:=#0
    else Result:=key;
  end;
end;

Uso:
Código Delphi [-]
procedure TfrmBuscaSuministro.txtBuscaSumKeyPress(Sender: TObject; var Key: Char);
begin
  key:=cls.ValidarEntrada(Key, 'SoloNumerosEnteros');
end;

Si hubieran mejores propuestas por favor agradecería las sugerencias.

Atte
Responder Con Cita
  #2  
Antiguo 01-03-2024
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Una mejora simple es dejar de usar `stringly typed apis`:

https://wiki.c2.com/?StringlyTyped
Cita:
Method parameters that take strings when other more appropriate types should be used
Aqui es claro que un enum seria mejor.
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 03-03-2024
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
De a poco agarrando gusto por ChatGPT. Usando Enum, evitas errores.

Código Delphi [-]
type
  TTipoEntrada = (teSoloLetras, teSoloNumerosEnteros, teSoloNumerosDecimales, teLetrasYNumeros);

function TFunciones.ValidarEntrada(Key: Char; Tipo: TTipoEntrada): Char;
begin
  case Tipo of
    teSoloLetras:
      if not (Key in ['a'..'z', 'A'..'Z', ' ', #7, #8, #13]) then Result := #0
      else Result := Key;
    teSoloNumerosEnteros:
      if not (Key in [#8, '0'..'9', '+', '-', #13]) then Result := #0
      else Result := Key;
    teSoloNumerosDecimales:
      if not (Key in ['0'..'9', '.', #8]) then Result := #0
      else Result := Key;
    teLetrasYNumeros:
      if not (Key in ['0'..'9', '.', 'a'..'z', 'A'..'Z', ' ', #7, #8]) then Result := #0
      else Result := Key;
  end;
end;
Responder Con Cita
  #4  
Antiguo 04-03-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por darkamerico Ver Mensaje
Saludos amigos, aquí comparto mi rutina para validar de forma sencilla el ingreso de un conjunto personalizado de datos en un componente TEdit:
Si hubieran mejores propuestas por favor agradecería las sugerencias.

Gracias.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 04-03-2024
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Si me lo permiten, propongo una pequeña variante...

Código Delphi [-]

function TFunciones.ValidarEntrada(Key: Char; Tipo: TTipoEntrada): Char;
const
  ACheckingKey:Array[TTipoEntrada] of String=('abcdefghijklmnopqrstuvwxyz'+#7+#8+#9,
                                           '0123456789+-'#8+#13,
                                           '0123456789.'+#8,
                                           '0123456789abcdefghijklmnopqrstuvwxyz '+#7+#8);
begin
  result:=#0;
  if Pos(lowercase(key), ACheckingKey[Tipo])>0 then
     result:=Key;
end;
Saludos cordiales
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar ingreso de datos en TClientDataSet? ezequiel913 Varios 0 13-10-2011 21:14:21
como validar el ingreso de datos en una BD??? ezequiel913 OOP 4 16-05-2011 22:16:57
Rutina para Validar Campos oscarac OOP 14 07-05-2011 10:16:18
Agregar Campo a ADOQuery para ingreso de datos mike_1979 SQL 4 21-08-2008 20:17:17
Validar ingreso al Sistema.... BlueSteel Varios 8 28-01-2005 00:58:27


La franja horaria es GMT +2. Ahora son las 09:18:02.


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
Copyright 1996-2007 Club Delphi