PDA

Ver la Versión Completa : Trabajar con cadenas


judoboy
22-05-2003, 10:23:04
Hola a todos, mi duda es la siguiente, tiene que ver con una duda que os comente hace unos dias sobre fechas y horas.

El asunto es el siguiente yo obtengo la diferencia de horas entre una fecha y me devuelve un resultado de tipo TTime, el que posteriormente lo paso a un string.

Bueno aqui tengo el problema es que, los resultados desde 0 horas a 9 horas los devuelve del asi

9:15:00


Mientras que los que son de 10 horas a 24 horas los devuelve asi

19:25:00


El asunto es que a mi solo me interesa el valor de la hora por eso utilizaba esta función


EditHoras.Text:=TimeToStr(horastotal);

EDitHoras.Text:=Copy(EditHoras.Text,1,2);
Horas:=StrToInt(EditHoras.Text);


y asi trabajaba con enteros bueno para horas de 10 a 24 funciona bien. El asunto es que para horas de 0 a 9
yo creia que devolvia los resultados de la forma 09:15:00 para lo cual la función me servía.

Pero de esta forma 9:15:00

El resultado es 9: y evidentemente al pasarlo a un string me da un error. Como puedo descartar el segundo carácter si se tratan del caracter ':'

Muchas gracias.

judoboy
22-05-2003, 10:24:00
Queria decir al pasarlo a un integer

FRANKER
22-05-2003, 10:28:52
Puedes usar la Procedure DecodeTime.
Sacado de la Ayuda de Delphi5:

This example uses a button and two labels on a form. When the user clicks the button, the current date and time are reported in the captions of the two labels.


procedure TForm1.Button1Click(Sender: TObject);

var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
+ IntToStr(Month) + ' of Year ' + IntToStr(Year);
DecodeTime(Present, Hour, Min, Sec, MSec);
Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
+ IntToStr(Hour);
end;

JavierB
22-05-2003, 12:01:45
Hola, judoboy.

Esto te puede servir:

Cadena:=FormatDateTime('hh:nn:ss',Time);

Saludos,

Mick
23-05-2003, 23:50:38
Pasar el valor time que tienes a un string para despues pasarlo a entero es redundante. Haces asi un monton de operaciones de mas.

Una forma mucho mas sencilla y rapida de hacerlo:

NumeroHoras:= Trunc(time * 24 );

Salud2 !!!

bitERROR
24-05-2003, 02:01:11
Si mezclamos algunas de estas ideas que te parece ...

NumeroHoras := StrToInt(FormatDateTime('h', Time));

todos los caminos llevan a roma jeje ;)

judoboy
26-05-2003, 13:52:15
Gracias a todos