Ver Mensaje Individual
  #6  
Antiguo 30-04-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Reputación: 17
Mystery Va por buen camino
Smile

Hola Ledian_Fdez bueno ahora re pongo tu misma funcion un poco modificada...
primero el CI aparte de la fecha de nacimiento te brinda el sexo pues el penultimo numero del CI si es par es hombre y si es impar bueno tu sabes...
por ejemplo te pongo un grupo de funciones y luego la tuya... OK...
esta funcion es del truco 389 de trucomania
Código Delphi [-]
function DiasMes(fecha: TDateTime): integer;
var
   PrimerDiaMes, PrimerDiaMesSiguiente : TDateTime;
   anyo, mes, dia: Word;
begin
   DecodeDate( fecha, anyo, mes, dia );
   primerDiaMes := EncodeDate(anyo, mes, 1);
   primerDiaMesSiguiente := IncMonth(primerDiaMes, 1);
   result := Round(primerDiaMesSiguiente - primerDiaMes);
end;

esta me brinda el sexo.
Código Delphi [-]
function sexo(a:integer):boolean;
begin
  Result:=False;
  if (a mod 2)=0 then
    result:=True;
end;
y esta es la ultima... te especifico que a esta ultima le pasas el numero de CI completo no solo la fecha sino completo para que te devuelva el sexo en una variable global OK...
Código Delphi [-]
Function ValidaCI(CI : String) : Boolean;
var
  dia, mes, anio:Word;
  sex:Integer;
  fecha : TDateTime;
begin
  result:=True;
  if Length(CI)<>11 then
  begin
    Result := False;
    Application.MessageBox('No. Carnet de Identidad incompleto.' + #13 + 'Rectifique por favor.','SAF', MB_ICONERROR);
  end;
  anio:=StrToInt(Copy(CI,0,2));
  mes:=StrToInt(Copy(CI,3,2));
  dia:=StrToInt(Copy(CI,5,2));
  sex:=StrToInt(CI[Length(CI)-1]);
  try
    fecha:=EncodeDate(anio, mes, dia);
  except
  end;
  if DiasMes(fecha)then
  begin
    Application.MessageBox('Error en la cantidad de dias.' + #13 + 'Rectifique por favor.','SAF', MB_ICONERROR);
    result:=False;
    Exit;
  end;
  if not IsValidDate(anio, mes, dia) then
  begin
    Application.MessageBox('Error en la cantidad de dias.' + #13 + 'Rectifique por favor.','SAF', MB_ICONERROR);
    Result:=False;
    exit;
  end;
  if sexo(sex)then
    ShowMessage('Es macho')
  else
    ShowMessage('Es jebita');
end;


bueno a lo mejor se puede optimizar un poco mas pero bueno eso es todo... espero te sirva... OK chaooo

sin mas
Mystery

PD: todo esto es con un form un boton y un Edit, en el onclick llamas a la funcion pasandole el CI OK chaooo
Responder Con Cita