Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   ejercicio (https://www.clubdelphi.com/foros/showthread.php?t=54505)

jefferson 21-03-2008 00:27:01

ejercicio
 
hola amigos.

les pidor el favor a ver si me pueden colaborar acerca de la elaboracion de siguiente ejercicio.

hacer una clase que se llama correo electronico. esa clase recibe un correo y de respuesta me dice si el correo es valido o no.

es que apenas estamos viendo este tema y soy algo nobato, les agradesco su pronta ayuda.
bye.

dec 21-03-2008 05:07:16

Hola,

Perdona, pero, tal como enfocas el problema, deberías revisar la guía de estilo de estos foros: aquí no se está para hacer los ejercicios a nadie. Además, por favor, ten un poco más de vista al titular los hilos que inicies, porque, los títulos son muy útiles cuando se está buscando información en los foros, siempre que dichos títulos sean descriptivos.

jefferson 22-03-2008 01:55:00

confucion
 
hola creo que me estan malinterpretando.
lo que pasa es que solo pido una ayuda en cuanto a el planteamiento de las condiciones en el ejercicio, lo demas esta bien. con esto no te estoy pidiendo de que me realises el ejercicion en si.
si no me supe explicar me disculpan.
bye.

keyboy 22-03-2008 02:12:10

Primero que nada sería bueno que especificaras qué entiendes por correo válido. ¿Te estás refiriendo al texto del correo o a si el formato de la dirección es correcto?

Bye

jefferson 22-03-2008 02:49:25

especifico mi pregunta
 
hala amigo.
me refiero mas o menos a lo siguiente:

ingreso un correo como juanito@hotmailcom.
o juanito@yahoo.es o bien sea uno para gmai. como este es un ejercicion de principiantes, solo necesito organizar la condicion que me diga si el correo ingresado es valido o no.

yo tengo un ejercio de clases, pero este es para allar el area de un cuadrado.
osea asi:

unit cuadradounit;
interface
type
Tcuadrado=class
private
lado:integer;
public
procedure setlado(Alado:integer);
function area:integer;
function getlado:integer;
end;
implementation
procedure Tcuadrado.setlado(Alado:integer);
begin
lado:=Alado;
end;
function Tcuadrado.getlado:integer;
begin
result:=lado;
end;
function Tcuadrado.Area:integer;
begin
result:=lado*lado;
end;
end.
end.


la cosa es que en este necesito otro enfoque por lo de la condicion, y alli es donde me enrredo un poco.

mamcx 22-03-2008 20:04:03

O sea que estas buscando si el texto entrado es un correo? Asi, si alguien escribe:

- correonovalidao.com
- correo@novalido
- @novalido.com

diga que no lo es?

jefferson 22-03-2008 20:16:12

hola.
si claro amigo a eso me refiero

es que en turbo pascal seria asi:

if (correo<>yahoo.es)or(correo<>hotmail.com)or(correo<>gmail.com)then
begin
writeln('este correo no es valido');
end
else
begin
writeln('correo valido');
end;
end.


pero en delphi nose cambios habrian. bye.

mamcx 22-03-2008 20:29:35

Delphi y Pascal es lo mismo. Pero el algoritmo que usas no sirve.

Y que pasa si es uno "estesi@esvalido.com"?

Debes es armar un sistema de reglas que son comunes a todas las direcciones de correo. Como por ejemplo, que tiene un @, que antes hay esto y que despues esto.

Para ello, busca en internet como validar un correo electronico, veras muchos ejemplos.

jefferson 22-03-2008 20:33:20

gracias
 
pase eso por alto gracias.

ya me pongo atrabajar en eso :D. hare el planteamiento. bye.

jefferson 25-03-2008 18:24:01

un saludo a todos:

oye parsero ya tengo la condicion: bueno aun que esa es solo para verificar que este el @. pero pues de alli se basan las demas condiciones.
gracias a los que opinaron y/o ayudaron.

for i:=1 to length(email)do
begin
if email[i]='@'then
begin
arroba:=true;
break;
end;
end.

y pues podemos dar por terminado el tema. un que me queda buentrabajo por hacer aun.
bye.:D

egostar 25-03-2008 18:50:59

Cita:

Empezado por jefferson (Mensaje 275142)
oye parsero ya tengo la condicion: bueno aun que esa es solo para verificar que este el @. pero pues de alli se basan las demas condiciones.
gracias a los que opinaron y/o ayudaron.

Hola jefferson

Aunque esto de validar un correo tiene sus complicaciones, que te parece esto?

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Correo: string;
begin
  Correo := 'usuario@correo.com';
  if (Pos('@',Correo) > 0) and
     (Pos('.',Correo) > 0) then
     ShowMessage('Correo Válido')
  else ShowMessage('Correo Inválido');
end;

Salud OS

PD: Usa las etiquetas delphi para que tu código se vea mejor...

jefferson 26-03-2008 03:53:47

gracias
 
hola pana (a).
pues gracias amigo esta forma de buscar el arroba dentro del correo esta mas entendible que la de mi profesor. y pues como es para trabajar en unidades apartes declarando clases y funciones. ya sabes son bastantes condiciones para validar un correo electronico. le seguire metiendo cosas.
buena contribusion bye.:D

Delphius 26-03-2008 04:50:06

Hola!
Inspirado en el código de Egostar realize una función que tiene un poco más de control:

Código Delphi [-]
function ValidateEMail(EMail: string): boolean;
var PosA, PosP
begin
  PosA := Pos('@',EMail);
  PosP := Pos('.',EMail);
  result := (PosP > PosA) and (PosA <> 0)
end;

Saludos,

mamcx 26-03-2008 14:06:45

No hombre, ese codigo permitiria:

@.com!!!!

La forma correcta requiere hacer como minimo, un barrido.

Delphius 26-03-2008 14:18:06

Cita:

Empezado por mamcx (Mensaje 275324)
No hombre, ese codigo permitiria:

@.com!!!!

La forma correcta requiere hacer como minimo, un barrido.

Mamx, estamos tratando de darle una idea, más que darle la solución de una. Invitamos a pensar y razonar a jefferson.

Además, por algo dije:

Cita:

que tiene un poco más de control
Pero con respecto a la idea de Egostar, que su código no tiene en cuenta la posición del punto respecto al arroba.

Saludos,

keyboy 27-03-2008 02:52:57

A ver que les parece esta otra aproximación

Código Delphi [-]
function ValidEMail(EMail: String): Boolean;
var
  Parts: TStrings;
  Usuario, Servidor: String;
  I: Integer;

begin
  // Seamos pesimistas
  Result := false;

  // Quitamos espacios a los lados, que si bien son incorrectos, no estorban
  EMail := Trim(EMail);

  // Pero no permitamos espacios intermedios
  if Pos(' ', EMail) <> 0 then
    exit;

  Parts := TStringList.Create;

  try
    // Partamos la cadena tomando la @ como delimitador
    Parts.Delimiter := '@';
    Parts.DelimitedText := EMail;

    // Debe haber dos y sólo dos partes...
    if Parts.Count <> 2 then
      exit;

    Usuario := Parts[0];
    Servidor := Parts[1];

    // ...y ninguna puede estar vacía
    if (Usuario = '') or (Servidor = '') then
      exit;

    // Ahora separemos la parte servidor tomando el . como delimitador
    Parts.Delimiter := '.';
    Parts.DelimitedText := Servidor;

    // Debe haber al menos dos partes...
    if Parts.Count < 2 then
      exit;

    // ...pero ninguna vacía
    for I := 0 to Pred(Parts.Count) do
      if Parts[i] = '' then
        exit;

    Result := true;
  finally
    Parts.Free;
  end;
end;

Como digo, es sólo una aproximación así que no pretende hacer más que esto:

1. Determinar que existe una y sólo una @
2. Que hay algo antes (usuario) y después (servidor) de esa @
3. Que después de la @ hay por lo menos dos partes separadas por puntos
4. Que ninguna de esas partes está vacía.

Esto es, se permiten cosas como

usuario@servidor.com

pero no

usuario@servidor
@servidor.com
usuario@@servidor.com
usuario@servidor..com
etc.

No valido el punto en la parte de usuario porque, al menos yo, tengo direcciones de correo de la forma

nombre.apellido@servidor.com

Bye


La franja horaria es GMT +2. Ahora son las 16:13:32.

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