Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como juntar la fecha de unos edits en una sola (https://www.clubdelphi.com/foros/showthread.php?t=79883)

rufo 18-08-2012 20:35:47

Como juntar la fecha de unos edits en una sola
 
Hola amigos buenas tardes, mi titulo es un poco confuso pero les planteo el problema resulta que tengo 3 edits de los cuales cada uno de ellos pongo la fecha es decir, el 1 edit pongo el dia, el 2 edit porngo el nombre del mes, y el 3 edit pongo el año, lo que quiero saber si hay forma de que al guardar esa informacion se vuela en una sola fecha, en un solo campo les pongo un ejemplo:


15 AGOSTO 2012 ---- Esto seria como lo escribo en los edits

15/08/2012---------- Esto quisiera la forma en que se almacenara


Bueno espero me ayuden, un dato mas lo quiero almacenar en access 2010 y uso delphi 2007, de antemano gracias.

Delphius 18-08-2012 21:48:55

Para ingresar fechas existen controles más apropiados... como el TDateTimePicker, o el TMonthCalendar.

Si aún lo quieres hacer con TEdits, para "construir" la fecha utiliza EncodeDate().

Saludos,

Caral 18-08-2012 23:56:18

Hola
Sin mucha complicacion a lo novato:

Código Delphi [-]
var
  Form1: TForm1;
  dato2: string;

implementation

{$R *.dfm}

procedure TForm1.dato;
begin
   if edit2.text = 'enero' then
   begin
   dato2:= '/01/';
   end else
   if edit2.text = 'febrero' then
   begin
   dato2:= '/02/';
   end else
   if edit2.text = 'marzo' then
   begin
   dato2:= '/03/';
   end else
   if edit2.text = 'abril' then
   begin
   dato2:= '/04/';
   end else
   if edit2.text = 'mayo' then
   begin
   dato2:= '/05/';
   end else
   if edit2.text = 'junio' then
   begin
   dato2:= '/06/';
   end else
   if edit2.text = 'julio' then
   begin
   dato2:= '/07/';
   end else
   if edit2.text = 'agosto' then
   begin
   dato2:= '/08/';
   end else
   if edit2.text = 'septiembre' then
   begin
   dato2:= '/09/';
   end else
   if edit2.text = 'octubre' then
   begin
   dato2:= '/10/';
   end else
   if edit2.text = 'noviembre' then
   begin
   dato2:= '/11/';
   end else
   if edit2.text = 'diciembre' then
   begin
   dato2:= '/12/';
   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  dato;
  showmessage(edit1.Text+dato2+edit3.Text);
end;

Saludos

ecfisa 20-08-2012 07:36:13

Hola rufo.

Como te dijo Delphius, con otros componentes la taréa se simplifica muchísimo...

Usando edits, vas a tener que realizar varias comprobaciones para que sea realmente operativo (nunca se sabe que ingresará el usuario).

Básicamente es la idea que te ya te dió mi amigo :) : Comparar la cadena ingresada en Edit2 con los meses del año.

Te pongo una función que incluye la comprobación y acorto la comparación de meses aprovechando la variable LongMonthNames, pero los nombres de los meses dependerán de la configuración regional. Y si no estas seguro cuál tendrá el S.O, es mejor que utilices una solución como la que te sugirió Caral.
Código Delphi [-]
(* Devuelve dd/mm/aaaa o cadena vacía si hay error *)
function ComponeFecha(Dia, Mes, Anio: string): string;
{$J+}
const DM: array[1..12] of Byte=(31,28,31,30,31,30,31,31,30,31,30,31);
{$J-}
var
  m,d,a: Integer;
  v: array of string;
begin
  DM[2]:= 28; 

  SetLength(v, 12);
  for m  := 0 to 11 do v[m] := UpperCase(LongMonthNames[m+1]);
 
  m := AnsiIndexStr(UpperCase(mes), v) + 1;
  if TryStrToInt(Dia, d) and (m > 0) and TryStrToInt(Anio,a) then
  begin
     if (((a mod 4) = 0)and((a mod 100) <> 0)or(a mod 400 = 0)) then Inc(DM[2]);
     if d in [1..DM[m]] then
      Result := StringOfChar('0', 2-Length(Dia)) + Dia + '/' +
        StringOfChar('0', 2-Length(IntToStr(m))) + IntToStr(m) + '/' + Anio;
  end;
end;

Llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ComponeFecha(Edit1.Text, Edit2.Text, Edit3.Text));
end;

Saludos.

Delphius 20-08-2012 15:29:20

Hola,
Ecfisa, ya existe una función que determina si un año es bisiesto ;)

Saludos,

rufo 20-08-2012 17:39:01

Ok amigos gracias por darme ejemplos los probare y les dire cual fue mi resultado.

ecfisa 20-08-2012 19:02:07

Cita:

Empezado por Delphius (Mensaje 440001)
Hola,
Ecfisa, ya existe una función que determina si un año es bisiesto ;)

Saludos,

Hola.

No conocía la función, gracias por el dato ;)

Saludos. :)

ecfisa 21-08-2012 00:41:33

Hola.

Para aportar mas datos de la función IsLeapYear (que no conocía), esta es la implementación que tiene en SysUtils :
Código Delphi [-]
function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;

Saludos. :)

Casimiro Noteví 21-08-2012 00:52:43

Cita:

Empezado por ecfisa (Mensaje 440104)
Hola.

Para aportar mas datos de la función IsLeapYear (que no conocía), esta es la implementación que tiene en SysUtils :
Código Delphi [-]function IsLeapYear(Year: Word): Boolean; begin Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0)); end;


Saludos. :)


Es que se han copiado de tu código y seguro que no te pagan derechos de autor :)

ecfisa 21-08-2012 03:23:41

Cita:

Empezado por Casimiro Notevi (Mensaje 440108)
Es que se han copiado de tu código y seguro que no te pagan derechos de autor :)

Si, eso mismo fué lo primero que pensé ni bién lo ví. Así que ya mismo avisé a mi bufete de abogados para que se encargen del tema.

¡ Ya verás que no la sacarán barata ! :D

Saludos. :)


La franja horaria es GMT +2. Ahora son las 07:35:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi