Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qua Jul 19, 2017 4:29 pm Assunto: [resolvido] Criar lista de horários |
|
|
Amigos, preciso criar uma lista de horarios com intervalo de 45min.
Essa rotina deve ir das 08:00 até as 11:45 e depois das 13:30 até as 20:15
Só consegui gerar direto, sem intervalo ao meio dia.
Como poderia fazer?
Código: | var
x : Integer;
HoraIni : TTime;
begin
// Abre e fecha o componente de memoria
cdsHorarios.Close;
cdsHorarios.IsEmpty;
cdsHorarios.CreateDataSet;
cdsHorarios.Open;
// Procedimento de inicio de hora
HoraIni := StrToTime('08:00');
// For para ir das 08:00 as 19:00
for x := 1 to 17 do
begin
cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
HoraIni := IncMinute(HoraIni,45);
end;
cdsHorarios.First; |
Editado pela última vez por renanbg em Qui Jul 20, 2017 4:01 pm, num total de 3 vezes |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jul 19, 2017 4:47 pm Assunto: |
|
|
Boa tarde,
Experimente dessa forma:
Código: | var
x : Integer;
Hora: TTime;
HoraFim: TTime;
HoraIntIni: TTime;
HoraIntFim: TTime;
begin
cdsHorarios.Close;
cdsHorarios.CreateDataSet;
cdsHorarios.Open;
HoraFim := EncodeTime(20, 15, 0, 0);
HoraIntIni := EncodeTime(11, 45, 0, 0);
HoraIntFim := EncodeTime(13, 30, 0, 0);
Hora := EncodeTime(8, 0, 0, 0);
repeat
if (Hora <= HoraIntIni) or
(Hora >= HoraIntFim) then
begin
cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := Hora;
cdsHorarios.Post;
end;
Hora := IncMinute(Hora, 45);
until Hora > HoraFim;
cdsHorarios.First; |
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos!gopouva-residencial-casa |
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Jul 19, 2017 4:48 pm Assunto: |
|
|
Teste assim:
Código: | var
x: Integer;
HoraIni: TTime;
begin
// Abre e fecha o componente de memoria
cdsHorarios.Close;
cdsHorarios.IsEmpty;
cdsHorarios.CreateDataSet;
cdsHorarios.Open;
// Procedimento de inicio de hora
HoraIni := StrToTime('07:15');
// For para ir das 08:00 as 11:45 e 13:30 as 20:15
for x := 1 to 16 do
begin
HoraIni := IncMinute(HoraIni, 45);
cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
if HoraIni = StrToTime('11:45') then
HoraIni := IncMinute(HoraIni, 60);
end;
cdsHorarios.First;
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qua Jul 19, 2017 4:56 pm Assunto: |
|
|
Opa.
Muito bom pessoal.
Grato pela ajuda. |
|
Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Jul 20, 2017 3:34 pm Assunto: |
|
|
Amigos, só uma duvida.
Gostaria de exibir o horario sem os segundos.
Precisaria mudar toda estrutura para String ao inves de TTime e então usar assim?
Código: | Formatdatetime('hh:nn',HoraIni); |
|
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Jul 20, 2017 3:50 pm Assunto: |
|
|
Faça um teste mantendo o campo como Time e alterando a propriedade DisplayFormat para hh:nn. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Jul 20, 2017 3:59 pm Assunto: |
|
|
Bingo!
Eu estava trabalhando nessa propriedade, mas usando as mascaras geradas pelo maskedit.
Grato. |
|
Voltar ao Topo |
|
 |
|