Ver Mensaje Individual
  #5  
Antiguo 22-05-2012
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 88
Reputación: 18
geolife Va por buen camino
Gracias por la información Gatosoft, TDateTime funciona como tu comentas, pero no se como pasar los datos TTime en coma flotante de una forma predecible. De hecho la función EncodeDate ya funciona bien con fechas inferiores a 1900, el problema es cuando incluimos el tiempo de horas, minutos y segundos con EncodeDateTime.

Si fuera solo cuestión de guardar la información, podríamos pasar los valores de forma separada utilizando EncodeDate y EncodeTime, el problema es que el software se encarga de realizar cálculos de tiempo utilizando años,meses,dias, horas, minutos y segundos.

En resumen tenemos:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
 A,B: TDateTime;
begin

 // Fecha: 4 febrero 1755, 1 horas 22 minutos, 22 segundos -
 A := EncodeDateTime (1755,2,4,1,22,22,1); // Uses DateUtils
 ShowMessage (DateTimeToStr(A));
 // ERROR
 // Da como resultado 5 febrero de 1755 , 22 horas 37 segundos, es decir otro resultado?
 // Obviamente uno esperaría 4 febrero 1755, 1 horas 22 minutos, 22 segundos

  A := EncodeDate (1755,2,4); B:= EncodeTime (1,12,22,1); // Uses DateUtils
  ShowMessage (DateToStr(A)+ ' '+ (TimeToStr(B)));
  // OK la visualización, pero tenemos la información en 2 variables.

  // Intentamos poner en A el valor TDateTime por seperado
  A := EncodeDate (1755,2,4); A := EncodeTime (1,12,22,1);
  ShowMessage (DateTimeToStr(A));
  // ERROR OTRA VEZ
  // ¿¿ ????
 end;
end.

, atascado con TdateTime...
Responder Con Cita