Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   De un memo a un TDataTime (https://www.clubdelphi.com/foros/showthread.php?t=49812)

jorgegetafe 01-11-2007 13:58:37

Muy util lo de f1 :-) de todas formas no me sirve la función que me ha dado, ya que como he dicho antes solo calcula la diferencia entre horas :-(

jorgegetafe 01-11-2007 14:04:12

Vale ya lo he solucionado, no se porque, pero restando 26 horas, a la que introduce el usuario ya muestra la diferencia correctamente.

Código Delphi [-]
PROCEDURE TForm1.RestanteTimer(Sender: TObject);                                // Muestra la hora restante
VAR
  a: ttime;
  b: ttime;
  c: ttime;
BEGIN
  a:= now;
  b:= EncodeTime( 28-(StrtoInt(hora.Text)), (StrtoInt(minuto.Text)), (StrtoInt(segundo.Text)), (StrtoInt(msegundo.Text)));
  c:= b-a;
  label3.caption:= timetostr (c);
  //Label3.caption:= TimeTostr(EncodeTime( (StrtoInt(hora.Text)), (StrtoInt(minuto.Text)), (StrtoInt(segundo.Text)), (StrtoInt(msegundo.Text)) ));
END;

De todas formas, no se porque se me va incrementando en vez de disminuyendo el tiempo que queda :-( ¿alguien sabe porque?

jorgegetafe 02-11-2007 16:42:48

Me estoy volviendo loco con esto y estoy convencido de que no es tan dificil, a ver si por favor, os lo suplico ya, me podeis ayudar.


Tengo tres edit, en el que el usuario introduce en el primero una hora, en el segundo los minutos y el tercero los segundos, lo que quiero es que cuando la hora del sistema sea igual a la introducida pues que se hagan una serie de cosas (eso es lo de menos), pero soy incapaz de hacer esa comparación correctamente:

Si utilizo variables de tipo time, la diferencia entre la hora del sistema y la del usuario no son reales (10:30-10:00= 23h)


¿Como lo puedo hacer? Muchas gracias.

jhonny 02-11-2007 16:57:14

Bueno, prueba con lo siguiente para que te hagas a la idea de como hacer lo que quieres:

Código Delphi [-]
var
  HUser :TDateTime;
begin
  HUser := EncodeTime(StrToInt(Edit1.Text), StrToInt(Edit2.Text), StrToInt(Edit3.Text), 0);
  ShowMessage(FormatDateTime('HH:MM:SS', HUser - Time));
end;

Caral 02-11-2007 17:38:05

Hola
No se si sera esto lo que necesitas, pero hice un ejemplo sencillo
Saludos

jorgegetafe 02-11-2007 23:16:57

Muchas gracias a los dos, voy a probarlo ya os cuento, pero gracias de antemano ;-)

jorgegetafe 03-11-2007 00:21:08

Ya lo he probado, de nuevo muchas gracias a los dos por vuestro tiempo.

Como ya habreis intuido estoy haciendo un programa para que cuando la hora del usuario coincida con el sistema se apague el ordenador, o se apague la pantalla... cosas de esas...

Aplicando vuestro código, lo pongo en un timer de esta forma:





Código Delphi [-]
procedure TForm1.AccionTimer(Sender: TObject);
Var
HUser: TDateTime;
BEGIN
HUser := EncodeTime(StrToInt(hora.Text), StrToInt(minuto.Text), StrToInt(segundo.Text), 0);
IF (HUser = time) THEN
showmessage ('Es la misma hora');
END;








Resulta que aunque ponga la misma hora que el sistema, la condicion: "IF (HUser = time) THEN" nunca se me cumple :-S y claro nunca se realiza lo que yo quiero que se haga, en este caso por probar un showmessage. No me entra en la cabeza que puede estar mal, ¿sabeis vosotros que falla? Por cierto el timer esta on jeje.

maco2007 03-11-2007 00:53:37

.............................................

Caral 03-11-2007 02:13:12

Hola
Para empezar esto que significa?:
Cita:

Empezado por maco2007 (Mensaje 243157)
.............................................

Para mi falta de educación, si no se tiene nada que decir, mejor ahorrar espacio en el club.
En segundo lugar:
Esto:
Cita:

Escrito por: jorgegetafe.
Como ya habreis intuido estoy haciendo un programa para que cuando la hora del usuario coincida con el sistema se apague el ordenador, o se apague la pantalla... cosas de esas...
Que yo sepa no hay en el club nadie con poderes de pitonisa, para mi se trata de ayudar y aveces se dan palos de ciego, que costaba desde un principio explicar las cosas con mas detalle?.
Después de desahogarme, aquí te envió otro ejemplo que hace lo que necesitas:
1: contiene un timer, este establece la hora y por supuesto esta cambiando continuamente.
2: se colocan, las horas edit2, los minutos edit3, los segundos edit4
3: se presiona el botón de Colocar hora y queda grabado en el edit5.
4: se espera a que esta sea la misma que la del sistema, en cuanto sea la misma, envía un mensaje y cierra el programa.
Espero ahora si te sirva y comentes mas lo que necesitas la próxima vez.
Saludos

jorgegetafe 03-11-2007 10:46:46

Muchas gracias por el programilla y perdón por no haber dado todos los datos necesarios, pero es que pense que no era necesario.

Respecto a lo de los puntos, primero escribió este mensaje:

***************
Facil

Si quieres colocar los 3 memos en un Calendar seria asi:

var
A:Date;
begin
A:= StrToDate(Memo1.text+Memo2.text+;Memo3.Text)
Calendar1.Date:= A;
***************

Y luego lo borro para dejar los puntos, no se porque.

Gracias a todos.


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

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