Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
Angry de nuevo con las horas

Hola al foro.

Mirar, de vuelta con las horas: Tengo un tope de horas concretamente 64 y tengo la necesidad de restarle horas y minutos.

ejemplo:

si le resto a 64 horas 0:15 = 63:45

¿ sabeis como seria la formula ?

Gracias anticipadas.
YOLANDAM

Última edición por YolandaM fecha: 10-11-2003 a las 19:44:13.
Responder Con Cita
  #2  
Antiguo 10-11-2003
CFPA86 CFPA86 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Medellin (Colombia)
Posts: 119
Poder: 21
CFPA86 Va por buen camino
Mira, pasas todo lo que vas a restar a minutos, lo restas y luego el resultado que es en minutos lo pasas a horas, echale cabeza asi, creo que te pueda funcionar o si no me escribes si tienes algun problema.
__________________
Siempre hay un primer momento para todo.
Responder Con Cita
  #3  
Antiguo 10-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
Gracias en molestarte en contestar.
Responder Con Cita
  #4  
Antiguo 11-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
nada:

sigo sin saber como hacer la formula.
Responder Con Cita
  #5  
Antiguo 11-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
tengo el siguiente codigo y lo hace bien.
implementation
var totalh,totalm:double;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Hour, Min, Sec, MSec: Word;
begin
totalh:=totalh+SpinEdit1.Value/24;
totalm:=totalm+SpinEdit2.Value/1440;
DecodeTime(totalh+totalm, Hour, Min, Sec, MSec);
edit1.Text:=IntToStr(hour+trunc(totalh+totalm)*24)+':'+IntToStr(min);
end;

initialization
totalh:=0;
totalm:=0;
end.
------------------------------------------------------
hasta aqui todo bien...
ahora tengo un tope de horas ( concretamete 64) en la cual tengo que restarle el contenido de edit1.text
por ejemplo, si en el contenido de edit1.text es 0:15 en otro text tendria qie poner 53:45, ¿ como se restaria esto y presentaria en otro control text ?

Saludos al foro.
Responder Con Cita
  #6  
Antiguo 11-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
una ayuda por favor¡¡¡

tengo el siguiente codigo y lo hace bien.
implementation
var totalh,totalm:double;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Hour, Min, Sec, MSec: Word;
begin
totalh:=totalh+SpinEdit1.Value/24;
totalm:=totalm+SpinEdit2.Value/1440;
DecodeTime(totalh+totalm, Hour, Min, Sec, MSec);
edit1.Text:=IntToStr(hour+trunc(totalh+totalm)*24)+':'+IntToStr(min);
end;

initialization
totalh:=0;
totalm:=0;
end.
------------------------------------------------------
hasta aqui todo bien...
ahora tengo un tope de horas ( concretamete 64) en la cual tengo que restarle el contenido de edit1.text
por ejemplo, si en el contenido de edit1.text es 0:15 en otro text tendria qie poner 53:45, ¿ como se restaria esto y presentaria en otro control text ?

Saludos al foro.
Responder Con Cita
  #7  
Antiguo 12-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Este último mensaje, se había publicado como un nuevo hilo siendo continuación del ya abierto sobre el tema de Suma de horas, por lo que ha sido anexado.

Cuando se abre un hilo para un tema concreto, se debe de seguir siempre en el mismo hasta que se de por terminado el tema, si la persona que pregunta, necesita que se le amplie la información debe de seguir añadiendo mensajes al mismo y hilo y no abrir un nuevo.

En cuanto a la posible solución hay varias y ya se ha apuntado una de ellas, pasar todo a minutos por ejemplo hacer las operaciones y luego reconvertirlo a horas minutos, segundos.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 12-11-2003
CFPA86 CFPA86 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Medellin (Colombia)
Posts: 119
Poder: 21
CFPA86 Va por buen camino
Hola, nuevamente mira estudia y aplica este codigo, me funciona.

procedure TFctrltpo.DifTpoCtr(HorIni1, HorFin1 : String);
var
HoraInicial, HoraFinal : TDateTime;
HorIni, MinIni, HorFin, MinFin, Sec, MSec, MinAuxRes : Word;
Lsw, HorIniAux, HorFinAux : string;
Li : byte;
begin
LSumMin := 0;
HorIniAux := HorIni1;
HorFinAux := HorFin1;
if (HorIniAux <> '') and (HorFinAux <> '') then
begin
HoraInicial := StrToTime(HorIniAux);
DecodeTime(HoraInicial, HorIni, MinIni, Sec, MSec);
HoraFinal := StrToTime(HorFinAux);
DecodeTime(HoraFinal, HorFin, MinFin, Sec, MSec);
if (HoraFinal > HoraInicial ) then
// Hora de entrada (inicial) es menor que //
// la hora de salida (final), lo mas segu-//
// ro es que el usuario digito la hora de //
// salida bajo el horario de 12 horas //
begin
Lsw := 'Incorrecto';
MinAuxRes := 0;
if (HorIni = HorFin) then
begin
MinRes := MinFin - MinIni;
end
else
begin
MinRes := 60 - MinIni;
HorIni := HorIni + 1;
while (Lsw <> 'Correcto') do
begin
MinAuxRes := MinAuxRes + 1;
if (HorIni = HorFin) then
begin
MinRes := MinRes + MinFin;
Lsw := 'Correcto';
end;
if (MinAuxRes = 60) then
begin
MinRes := MinRes + MinAuxRes;
MinAuxRes := 0;
HorIni := HorIni + 1;
end;
end;
end;
LSumMin := LSumMin + MinRes;
MinAuxRes := 0;
HorIniAux := '';
HorFinAux := '';
Lsw := 'Incorrecto';
MinRes := 0;
LSumHor := 0;
while Lsw <> 'Correcto' do
begin
LSumHor := LSumHor + 1;
MinRes := MinRes + 60;
if (MinRes > LsumMin) then
begin
MinRes := MinRes - 60;
LSumHor := LSumHor - 1;
Lsw := 'Correcto';
end
else
begin
if (MinRes = LsumMin) then
Lsw := 'Correcto';
end;
end;
end
else
begin
Gcoderror := 1; // Es mayor la hora final que hora de entrada //
// Siempre y cuando sea horario de 12 horas //
end;
Label12.Caption := IntToStr(LSumHor) + ',' + IntToStr(LSumMin - MinRes) +
' Min. /' +
end;
end;
end;

Me dices como te fue, por este mismo hilo.
chauuuuuuuuuuu
__________________
Siempre hay un primer momento para todo.
Responder Con Cita
  #9  
Antiguo 12-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
hOLA CFP86, QUE TAL?

Mira, te digo dónde me da error OK?

procedure TFctrltpo.DifTpoCtr(HorIni1, HorFin1 : String); --- ERROR
var
HoraInicial, HoraFinal : TDateTime;
HorIni, MinIni, HorFin, MinFin, Sec, MSec, MinAuxRes : Word;
Lsw, HorIniAux, HorFinAux : string;
Li : byte;
begin
LSumMin := 0; ------------ERROR
HorIniAux := HorIni1;
HorFinAux := HorFin1;
if (HorIniAux <> '') and (HorFinAux <> '') then
begin
HoraInicial := StrToTime(HorIniAux);
DecodeTime(HoraInicial, HorIni, MinIni, Sec, MSec);
HoraFinal := StrToTime(HorFinAux);
DecodeTime(HoraFinal, HorFin, MinFin, Sec, MSec);
if (HoraFinal > HoraInicial ) then
// Hora de entrada (inicial) es menor que //
// la hora de salida (final), lo mas segu-//
// ro es que el usuario digito la hora de //
// salida bajo el horario de 12 horas //
begin
Lsw := 'Incorrecto';
MinAuxRes := 0;
if (HorIni = HorFin) then
begin
MinRes := MinFin - MinIni;
end
else
begin
MinRes := 60 - MinIni;
HorIni := HorIni + 1;
while (Lsw <> 'Correcto') do
begin
MinAuxRes := MinAuxRes + 1;
if (HorIni = HorFin) then
begin
MinRes := MinRes + MinFin;
Lsw := 'Correcto';
end;
if (MinAuxRes = 60) then
begin
MinRes := MinRes + MinAuxRes;
MinAuxRes := 0;
HorIni := HorIni + 1;
end;
end;
end;
LSumMin := LSumMin + MinRes;
MinAuxRes := 0;
HorIniAux := '';
HorFinAux := '';
Lsw := 'Incorrecto';
MinRes := 0;
LSumHor := 0;
while Lsw <> 'Correcto' do
begin
LSumHor := LSumHor + 1;
MinRes := MinRes + 60;
if (MinRes > LsumMin) then
begin
MinRes := MinRes - 60;
LSumHor := LSumHor - 1;
Lsw := 'Correcto';
end
else
begin
if (MinRes = LsumMin) then
Lsw := 'Correcto';
end;
end;
end
else
begin
Gcoderror := 1; // Es mayor la hora final que hora de entrada //
// Siempre y cuando sea horario de 12 horas //
end;
Label12.Caption := IntToStr(LSumHor) + ',' + IntToStr(LSumMin - MinRes) +
' Min. /' +
end;
end;
end;
Responder Con Cita
  #10  
Antiguo 12-11-2003
YolandaM YolandaM is offline
Miembro
 
Registrado: jul 2003
Posts: 38
Poder: 0
YolandaM Va por buen camino
hola otra vez CFPA86.
Mira este código me funciona bien.

//------------------------------------------------------------------//

unit sumahoras;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask, RzEdit, RzSpnEdt,dateutils;

type
TForm3 = class(TForm)
edit1: TRzSpinEdit;
edit2: TRzSpinEdit;
sumar: TBitBtn;
restar: TBitBtn;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
BitBtn1: TBitBtn;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure sumarClick(Sender: TObject);
procedure restarClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit4Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation
var totalh,TotalM,total,resta,totalm2: Ttime;


{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure TForm3.sumarClick(Sender: TObject);
var Hour, Min, Sec, MSec: Word;
var hour2, min2,sec2,msec2: word;
begin
{ ---------------------------------------------------------------------}

Totalh:=totalh+Edit1.Value/24 ;
Totalm:=totalm+Edit2.Value/1440 ;
{ --------------------------------------}
total:=total + edit1.Value/24;
totalm2:=totalm2 + edit2.Value/1440;

decodetime(resta - total-totalm2, hour2,min2,sec2,msec2);
edit4.Text:=inttostr(hour2 + trunc(resta - total )* 24 ) +':'+IntToStr(min2);
{ -----------------------------------------}
DecodeTime(totalh+totalm, Hour, Min, Sec, MSec);
Edit3.Text:=IntToStr(hour + trunc(totalh+totalm) * 24) +':'+IntToStr(min);
Edit1.Value:=0;
Edit2.Value:=0;


{ -------------------------------------------------------------------}
end;
procedure TForm3.restarClick(Sender: TObject);
var Hour, Min, Sec, MSec: Word;
var hour2, min2,sec2,msec2: word;
begin
totalh:=totalh-Edit1.Value/24;
totalm:=totalm-Edit2.Value/1440;
total:=total - edit1.Value/24;
totalm2:=totalm2 -edit2.Value/1440;

decodetime(resta - total-totalm2, hour2,min2,sec2,msec2);
edit4.Text:=inttostr(hour2 + trunc(resta - total )* 24 ) +':'+IntToStr(min2) ;
DecodeTime(totalh+totalm, Hour, Min, Sec, MSec);


edit3.Text:=IntToStr(hour+trunc(totalh+totalm)*24)+':'+IntToStr(min);
edit1.Value:=0;
edit2.Value:=0;
End;

procedure TForm3.FormActivate(Sender: TObject);
begin
edit4.Text:='';
EDIT3.Text:='';
totalh:= 0;
totalm:= 0;
resta:= 64 / 24;
total:=0;
totalm2:=0;
end;

procedure TForm3.Edit4Change(Sender: TObject);
begin
if edit4.Text= '64:0' then restar.Enabled:=false else restar.enabled:=true;
if edit4.Text='0:0' then sumar.Enabled:=false else sumar.enabled:=true;
end;

initialization
totalh:= 0;
totalm:= 0;
resta:= 64 / 24;

end.

Gracias a tu interes y al foro en general.
YOLANDAM
Responder Con Cita
  #11  
Antiguo 19-11-2003
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
Bueno, la respuesta a esto está en una seria de Units que encontré en Internet, donde suma Horas, minutos, meses, de todo, voy a tratar de colocarla en un site en miarroba.com, si es que alguien la solicita, pues llegue tarde a la pregunta y vi que habian muchas ideas.

Estas units lo que tienen son procedimientos y funciones al cual uno le pasa parametros y zasssssss!!!!!, Eureca!"!""""""
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:17:01.


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
Copyright 1996-2007 Club Delphi