Delphi - Convertir un Campo Time" a "Entero"

 
Vista:

Convertir un Campo Time" a "Entero"

Publicado por Sergio (12 intervenciones) el 29/04/2007 21:52:53
Hola a toda la comunidad:

Necesito saber cómo le hago para convertir un Campo "Time" a "Entero". Lo que quiero hacer es un programa que lleve el control de un Billar, donde tomo la hora inicial, la hora final y la multiplico por el costo por hora para que me de el total: Es decir:

Hora Inicio= 10:00 a.m.
Hora Final= 11:30 a.m.

Duración= 90 minutos (Hora y media)
Pago por hora= $20.00

Total = $30.00

Muchas gracias.

P.D: Cómo haría lo anterior en Delphi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Convertir un Campo Time

Publicado por nombre (106 intervenciones) el 30/04/2007 16:59:15
Esto es parecido, adaptalelo.

iCaloriasHora := DM.IBDSActividadesCALORIASHORA.AsInteger;
iHoras := StrToInt(Copy(FormatDateTime('hh:mm',DM.IBDSEjercicioDURACION.AsDateTime),1,2));
iMinutos := StrToInt(Copy(FormatDateTime('hh:mm',DM.IBDSEjercicioDURACION.AsDateTime),4,2));
DM.IBDSEjercicioCALORIASGASTO.AsInteger := (iHoras * iCaloriasHora) + Trunc((iMinutos * iCaloriasHora) / 60);

Lo que te interesa creo que es esto

StrToInt(Copy(FormatDateTime('hh:mm',DM.IBDSEjercicioDURACION.AsDateTime),1,2));
StrToInt(Copy(FormatDateTime('hh:mm',DM.IBDSEjercicioDURACION.AsDateTime),4,2));

Tendrás que tener en cuenta cuando la hora de inicio es de un día y la de finalización del días siguiente, por ej. de las 11:20 de la noche hasta las 02:30 de la madrugada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por Sergio (12 intervenciones) el 30/04/2007 19:49:40
En primer lugar muchas gracias por tomarte la molestia en responder a mi pregunta.

Sino es mucha molestia si me puedes adaptar el ejemplo, en mi form tengo lo siguiente, :

MaskEdit1 (Short Time) -> Para tomar la hora de inicio
MaskEdit2 (Short Time) -> Para tomar la hora final
MaskEdit3 (Short Time) -> Para mostrar el total de minutos usados
Edit1 -> Muestra el pago por hora que es igual a $20 pesos pero puede variar
Edit2 -> Para que me de el total en pesos multiplicando el MaskEdit3 * Edit1

Muchas gracias.

P.D: En el ejemplo que me mandaste me marca error en DM.IBDSEjercicioDURACION y todo lo que tienen DM. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por nombre (106 intervenciones) el 30/04/2007 22:24:20
//calcular importe
iHoras := StrToInt(Copy(FormatDateTime('hh:mm',MaskEdit3.Time),1,2));
iMinutos := StrToInt(Copy(FormatDateTime('hh:mm',MaskEdit3.Time),4,2));
Edit2.Text := FormatFloat('#0.00',iHoras * StrToInt(Edit1.Text) + (iMinutos * StrToInt(Edit1.Text)) / 60);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por Sergio (12 intervenciones) el 30/04/2007 22:52:17
Una par de dudas:

1) Me marca error en el MaskEdit3.Time
2) Qué representa el 1,2 y el 4,2

Salu2 y Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por nombre (106 intervenciones) el 01/05/2007 00:08:50
El error es porque yo lo había probado con un DateTimePicker.

Para el MaskEdit esto:

//calcular importe
iHoras := StrToInt(Copy(FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text)),1,2));
iMinutos := StrToInt(Copy(FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text)),4,2));
Edit2.Text := FormatFloat('#0.00',iHoras * StrToInt(Edit1.Text) + (iMinutos * StrToInt(Edit1.Text)) / 60);

Creo que se ha liado demasiado, debe poderse hacer más simple, de todas formas esto funciona.

el 1,2 y el 4,2 (mira Copy en la ayuda de Delphi), es para coger desde el caracter 1, 2 caracteres, o desde el caracter 4, 2 caracteres.

En lugar de los MaskEdits puedes utilizar DateTimePikcers, poniendo su propiedad Kind a dtkDate. Para coger la hora de ellos DateTimePicker1.Time
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por Sergio (12 intervenciones) el 01/05/2007 01:06:52
Gracias ya funcionó... pero no es exactamente lo que yo necesito:

Yo necesito lo siguientes:

* Tomar en un Maskedit la hora de llegada del cliente:
* Tomar en otro Maskedit la hora que terminó de usar la mesa de bilalr
* Sacar el total en minutos del tiempo que la uso.
* Sacar el total en pesos de acuerdo al tiempo que duró

MaskEdit1 -> Para tomar la hora de inicio
MaskEdit2 -> Para tomar la hora final
Edit1 -> Para mostrar el total de minutos usados
Edit2 -> Muestra el pago por hora que es igual a $20 pesos pero puede variar
Edit3 -> Para que me de el total en pesos multiplico el total de minutos por el pago por hora: Edit1 * Edit2

Gracias y disculpa tanta lata, pero me urge hacer el programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por nombre (484 intervenciones) el 01/05/2007 15:02:31
En el título de tu pregunta no ponía tanto, pero ahí va casi todo, el tiempo del maskedit3 te lo pongo en horas y minutos (03:24), si lo necesitas solo en minutos transformalo (1 hora tene 60 minutos).

procedure TForm1.Button1Click(Sender: TObject);
var
iHoras, iMinutos: integer;
begin
MaskEdit3.Text := TimeToStr(StrToTime(MaskEdit2.Text) - StrToTime(MaskEdit1.Text));
//calcular importe
iHoras := StrToInt(Copy(FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text)),1,2));
iMinutos := StrToInt(Copy(FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text)),4,2));
Edit2.Text := FormatFloat('#0.00',iHoras * StrToInt(Edit1.Text) + (iMinutos * StrToInt(Edit1.Text)) / 60);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias... y última duda

Publicado por Sergio (12 intervenciones) el 02/05/2007 03:08:05
Por último...

Lo que tengo que hacer en el programa es lo siguiente:

1) Llevar el control del tiempo en todas las mesas de billar, ahorita son como 10 mesas pero obvio que puede aumentar.

Cómo le harias tú para llevar ese control, con Base de Datos (y como) o no??

2) Necesito llevar el control para la venta de productos (cervezas, refrescos, comida, etc.) del Billar y también el control del inventario;

Tendrás algún código para realizar la venta, algo similar a una factura.

Muchas gracias.

P.D:

1) De seguro eres de España verdad, porque me he dado cuenta que en España hay muy buenos programadores

2) Me gustaría si me puedes mandar el código de la venta de productos recompensarte, es decir depositarte algunos dolares, a mi no me gusta quedarme con nada y me gusta ser agradecido, si te parece y si tu quieres podemos estar en comunicación por medio de mi correo:

[email protected]

GRACIAS POR TU AYUDA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias... y última duda

Publicado por nombre (106 intervenciones) el 02/05/2007 12:42:21
Para los billares una base de datos con una tabla BILLARES que sería la tabla "master", ahora tendría 10 registros, uno por mesa, y otra tabla PATIDAS que sería la tabla "detall" relacionada con la primera. De cada mesa se iría añadiendo un registro por cada partida jugada en ella, que es donde se controlaría el tiempo y el importe de la partida.

No tengo en Pascal ningún código de lo que dices, de todas formas no te será dificil encontrar algo por internet, o incluso mira a ver si hay algún ejemplo en Delphi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias... y última duda

Publicado por Carlos (1 intervención) el 05/06/2007 10:39:35
Un poco tarde, pero en Delphi existe una funcion que se llama minutesBetween (o parecido) en el que pones dos horas y te devuelve los minutos que han pasado. Con esa funcion lo unico que deberias hacer es almacenar en una variable el momento en el que entra.
Luego comparar esa variable con el momento que se va. Es muy sencilla, yo la estoy usando para un videoclub, para impedir que se pueda eliminar un alquiler, cuando han pasado mas de 5 minutos desde su alquiler.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir un Campo Time a Entero

Publicado por WS (3 intervenciones) el 16/07/2008 21:17:44
hola me podrias ayudar a mi tambien, lo que quiero hacer es algo parecido.
Necesito calcular un hora entre 2 fechas ejemplo: 06:00 -14:00 = 8:00 hrs luego convertirlas a un numero entero 8:00 = 8. Sumar este entero con otro calculado de igual manera y multiplicar este numero entero por una variable (por ejemplo 15) para obtener un total.

Lo estaba realizandon con maskedit, resulto que el mask edit me deja poner solo 23:59 y aveces puedo sobrepasar esta hora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir un Campo Time a Entero

Publicado por Sergio (12 intervenciones) el 16/07/2008 21:40:15
Hola:

Mándame un correo o agregame a mi msn y te ayudo, yo ya lo resolví.

De donde eres???????

P.D: Mándame un correo a yahoo y después de toy mi correo de hotmail para ayudarte más facilmente por el chat.

Bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar