Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2005
Epunamun Epunamun is offline
Miembro
 
Registrado: jul 2005
Posts: 45
Poder: 0
Epunamun Va por buen camino
Validar tipo de datos en un Tedit..

Hola nuevamente..... tengo un problemita... mi idea es validar los datos ke insertan los usuarios de mi aplicacion a travez de un Tedit. Por ejemplo para ke un Tedit no se kede vacio es simple..

Código Delphi [-]
    
if edit1.text = '' then
   MessageDlg('Ingrese un Telefono', mtInformation, [mbOK], 0);
 end;
 edit1.setfocus;
Pero como lo hago para tambien validar ke en el Tedit se puedan ingresar solamente numeros, como en el caso del Tedit anterior ke se tienen que ingresar solamente numeros telefonicos.

Bueno mi idea es no usar maskedit . ..

Pa variar gracias .....

Última edición por dec fecha: 01-10-2005 a las 19:10:13. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 01-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Epunamun
Por ejemplo para ke un Tedit no se kede vacio es simple..

Código:
    
  if edit1.text='' then
Pues ni tanto. Más correcto sería:

Código Delphi [-]
if Trim(edit1.text) = '' then

a menos que consideres puros espacios en blanco como un dato no vacío

Para lo de los números telefónicos te convendría más usar un TMaskEdit.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Dónde demonios habré leído yo que algo como lo siguiente era más efectivo? ¿Acaso fue en relación al lenguaje C#? ¿Valdrá para Delphi también, quiero decir, será más efectivo que otra cosa? No recuerdo dónde me enteré de esto, y, sin embargo es obsesión lo mío... ahora siempre lo tengo que hacer así porque me acuerdo de aquello que leí no sé dónde...

Código Delphi [-]
   if Length(Edit1.Text) = 0 then
   begin
     ShowMessage('¡Escribe algo hombre!');
   end;
Esto es, comparar la longitud de la cadena, para saber, si esta es "cero", que no se escribió nada en un "TEdit", en este caso, vamos... Para mí tengo que lo leí en algún artículo, curso, manual o libro sobre C#, que, puesto que se puede hacer algo así:


Código:
 if (textBox1.Text == string.Empty)
 {
   // Aviso a navegantes
 }
Leí, como he dicho ya, que era mejor, más efectivo, hacer algo así:


Código:
 if (textBox1.Text.Length == 0)
 {
   // Aviso a navegantes
 }
Bueno. En cualquier caso disculpad la digresión, si esta es muy evidente
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 01-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Pienso que la solucion de roman es mas efectiva, ya que con el trim eliminas los espacios en blanco. Pero midiendo la longitud podria ser validado si se deja un espacio, ya que seria diferente de 0.

Haciendo una combinacion de ambo, fenomenal
Código Delphi [-]
if Length(trim(Edit1.Text)) = 0 then
   begin
     ShowMessage('¡Escribe algo hombre!');
   end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 01-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Como bien dice vtdeleon, la razón del Trim es para eliminar los espacios en blanco ya que ' ' no tiene longitud cero.

Lo que dices de la mayor efectividad de Length, en efecto, no sé dónde lo habrás leído ; la llamada a una función siempre será un poco más lenta (unos cuantos nano segundos) por el paso de parámetros al stack y la devolución del valor. Compara el código ensamblado que genera Delphi:

Código:
if Length(S) = 0 then

mov eax, [ebp-$04]
call @LStrLen
    ; código de LStrLen
    test eax, eax
    jz +$03
    mov eax, [eax-$04]
    ret

test eax, eax
jnz +$0a


if S = '' then

cmp dword ptr [ebp-$04]
jnz +$0a
Aún descontando el código de LStrLen, está el paso del parámetro para llamar a la función y luego de cualquier manera requires una comparación.

// Saludos
Responder Con Cita
  #6  
Antiguo 01-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues muchas gracias, roman, por la información. Lamento no recordar dónde leí lo que digo, pero, si se mira el código fuente de XEditor podrá verse cómo hize caso de la lectura aquella... pero pronto dejará de verse así, puesto que corregiré donde sea menester el código que hasta ahora existe por algo parecido a lo que tú has propuesto y demostrado como más efectivo. Gracias de nuevo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 02-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Cita:
Lo que dices de la mayor efectividad de Length, en efecto, no sé dónde lo habrás leído ; la llamada a una función siempre será un poco más lenta (unos cuantos nano segundos) por el paso de parámetros al stack y la devolución del valor.
Sabía que dirían eso. Algo irónico:P
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 21:12:07.


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