GET para hora
Moderador: Moderadores
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
GET para hora
AMIGOS...
Alguem tem um exemplo de entrada no get para a hora?
Exemplo:
Tenho uma var chamada HORA1 = campo de 4 digitos... alfa...
Ela deve receber a entrada do get no formato "99:99"
Más depois de feita a leitura pelo READ é necessário que a hora digitada exista, por exemplo: se alguem digitar a hora: 26:39 o prog não deverá aceitar. Podemos usar a clausula VALID?
Aguardo informações...
Saudações a agradeço desde já o apoio dos colegas do forum...
Erasmo
Alguem tem um exemplo de entrada no get para a hora?
Exemplo:
Tenho uma var chamada HORA1 = campo de 4 digitos... alfa...
Ela deve receber a entrada do get no formato "99:99"
Más depois de feita a leitura pelo READ é necessário que a hora digitada exista, por exemplo: se alguem digitar a hora: 26:39 o prog não deverá aceitar. Podemos usar a clausula VALID?
Aguardo informações...
Saudações a agradeço desde já o apoio dos colegas do forum...
Erasmo
Não existe uma máscara que invoque a funções apropriadas para essa validação. Você terá de usar uma máscara normal (@R 99:99) e usar a cláusula VALID para executar uma função sua de checagem.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Ilustrando a idéia do Maligno....
ou mais enxuto ainda...
Código: Selecionar todos
cls
cTime:= space(5)
@ 10,10 get cTime pict "@ 99:99" valid Chk_Time(@cTime)
read
Function Chk_Time(par)
if settime(par+":00",.t.) // SetTime() é da CATools
return .t.
else
alert("nananina")
return .f.
endifCódigo: Selecionar todos
cls
cTime:= space(5)
@ 10,10 get cTime pict "@ 99:99" valid SetTime(cTime+":00",.t.)
readCompilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Outra coisa que acho muito importante, é transformar as horas em TIMETOSEC() da CT.LIB para transformar em segundos. Isto é muito bom para comparar horas com exatidão de uma forma analógica.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Acho que não precisa, Pablo. O código de teste é bem simples. Algo do tipo:
Pelo menos é isso que eu imagino que o Erasmo precisa. 
Editado: eu tinha invertido os operados lógicos.
Editado: eu coloquei um IF desnecessário.
Código: Selecionar todos
function ValHora(cHora) // formato esperado: "99:99"
return Val(Left(cHora,2)) <= 23 .and. Val(Right(cHora,2)) <= 59Editado: eu tinha invertido os operados lógicos.
Editado: eu coloquei um IF desnecessário.
Editado pela última vez por Maligno em 30 Mar 2008 17:44, em um total de 2 vezes.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Meus caros, podem testar a rotina postada lá em cima, funciona !
Não precisa da máscara "@R", a função SetTime() da Catools pega como parâmetro uma string como "00:00:00", e ela própria já retorna verdadeiro ou falso, no caso de intervalos não aceitos, não precisando portanto de outras funções de checagem, a menos que se queira fazer outras verificações.
Não precisa da máscara "@R", a função SetTime() da Catools pega como parâmetro uma string como "00:00:00", e ela própria já retorna verdadeiro ou falso, no caso de intervalos não aceitos, não precisando portanto de outras funções de checagem, a menos que se queira fazer outras verificações.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
Você deu uma solução bem prática, mas que não vai funcionar a contento, infelizmente. Esse VALID retornará TRUE para algo do tipo "2299". Por conta dos segundos limitados a 60, a checagem precisa ser separada.filizola escreveu:se estiver usando "@r 99:99"
get hora pict "@r 99:99" valid(hora<"2360")
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Nem duvido que funcione. É que se alguém, por algum motivo, resolve não usar a CATools, fica complicado usá-la só por causa de uma função. E como a coisa é simples, uma checagem simples também resolve.alaminojunior escreveu:Não precisa da máscara "@R", a função SetTime() da Catools pega como parâmetro uma string como "00:00:00", e ela própria já retorna verdadeiro ou falso
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Manuel Luis Modernel
- Usuário Nível 2

- Mensagens: 66
- Registrado em: 02 Mar 2008 20:40
- Localização: São José do Rio Preto - SP
Tela Clipper que mostra a "Hora Atual do Sistema"
Muito bom domingo Clipperiano à todos !
Adorei este forum, e por isto virou para mim leitura cotidiana obrigatória.
Peço desculpas sim, de só mostrar exemplos feitos em Summer 87, posto ser o único Clipper do qual conheço alguma coisa.
Foge um pouquinho do tema mais pode ser útil e interessante o exemplo abaixo onde eu mostrava na minha tela (no canto superior direito) a hora atual do sistema atualizada segundo a segundo.
Fiz uma pequena função chamada H() e depois chamava ela a cada GET usado no desenvolvimento do programa como segue:
Era uma "frescurite a mais", mas ficava legal !!!
Adorei este forum, e por isto virou para mim leitura cotidiana obrigatória.
Peço desculpas sim, de só mostrar exemplos feitos em Summer 87, posto ser o único Clipper do qual conheço alguma coisa.
Foge um pouquinho do tema mais pode ser útil e interessante o exemplo abaixo onde eu mostrava na minha tela (no canto superior direito) a hora atual do sistema atualizada segundo a segundo.
Fiz uma pequena função chamada H() e depois chamava ela a cada GET usado no desenvolvimento do programa como segue:
Código: Selecionar todos
func h
@ 00,71 say time()
hora=time()
return 0
e dai usava assim em todo lugar que pedisse uma atualização, um get, um dbedit em fim em qualquer lugar do programa, assim sempre atualizava e mostrava a hora certa que nem um relogio qualquer.
da seguinte forma
*ver o estoque.dbf geral
FUNC VERDBF
* AQUI EMBAIXO FAZIA MOSTRAR A HORA CERTA NO CANTO DA TELA!!
h()
save screen
declare cpo[4],tit[4]
cpo[1]=[DESCRI]
cpo[2]=[tamanho]
cpo[3]=[CODIGO]
cpo[4]=[qtdatual]
tit[1]=[DESCRI€ŽO DO PRODUTO]
tit[2]=[NUMERO]
tit[3]=[CODIGO]
tit[4]=[ESTOQUE]
set color to g+/n
@ 04,04,22,75 box boxd
set color to n/bg,w/n,,,n/bg
dbedit(05,05,21,74,cpo,"",.t.,tit)
restore screen
RETURN 0
OI Aqui é o Veio Modernel
-
Manuel Luis Modernel
- Usuário Nível 2

- Mensagens: 66
- Registrado em: 02 Mar 2008 20:40
- Localização: São José do Rio Preto - SP
Get para Hora
Nunca gostei de usar "formatos de hora" pre-determinados, dai criava meu jeito próprio.
Hora eu usava sempre como "String" e debulhava ela matematicamente para usar em cálculos (sou engenheiro e não programador hihihi).
vé o trabalho que me dava mais não tinha erro possível !!!
segue uma função que eu usava para Inclusão e Calculos de Horas Extras.
pode criticar a Vontade tá
?
mais uma em Clipper Summer 87 hihihihi
Hora eu usava sempre como "String" e debulhava ela matematicamente para usar em cálculos (sou engenheiro e não programador hihihi).
vé o trabalho que me dava mais não tinha erro possível !!!
segue uma função que eu usava para Inclusão e Calculos de Horas Extras.
pode criticar a Vontade tá
Código: Selecionar todos
func telinche
sele a
SET INDEX COD20
icodigo=space(8)
inome=space(30)
idatas=space(8)
idiasem=space(14)
ientrou="07:30" &&space(5)
isaiu="00:00" &&space(5)
imintot=0
imintot2=0
ihoras=0
ihoras2=0
iminutos=0
iminutos2=0
itothora=0
itothora2=0
itotminu=0
itotminu2=0
ialmoco=90
do while .t.
limpa23()
@ 05,27 clear to 07,52
@ 07,02 clear to 18,77
set color to gr+
@ 07,02,18,77 box boxd
@ 05,27,07,52 box boxd
set color to w+/n,n/w,,,w/n
centra("INCLUSAO DE HORAS EXTRAS",6)
@ 08,04 say "Codigo do Funcionario.......: "
@ 09,04 say "Nome do Funcionario.........: "
@ 10,04 say "Data da Hora Extra..........: (data/mes/ano)"
@ 11,04 say "Dia da Semana ou Feriado ...: "
@ 12,04 say "Hora de Entrada.............: "
@ 13,04 say "Hora de Saida...............: "
@ 14,04 say "Desconto para Almoco/Janta..: "
set index to
if repete=0
GO BOTTOM
endif
iCodigo=CODIGO
inome =NOME
idatas =DATAS
idiasem=DIASEM
IENTROU="07:30" &&ENTROU
SET INDEX COD20
@ 08,42 SAY iCodigo
@ 09,42 SAY inome
@ 10,42 SAY idatas
@ 11,42 SAY idiasem
@ 12,42 SAY ientrou
@ 14,42 say ialmoco
@ 08,42 get icodigo picture'AA999999'
read
IF icodigo=space(8)
sele b
save screen
declare cpo[2],tit[2]
cpo[1]=[NOME]
cpo[2]=[CODIGO]
tit[1]=cpo[1]
tit[2]=cpo[2]
limpa23()
sai()
@ 09,43,20,77 box boxd
cb()
dbedit(10,44,19,76,cpo,"",.t.,tit)
restore screen
set color to
icodigo=codigo
inome=substr(nome,1,30)
endif
sele a
SET INDEX COD20
@ 08,42 SAY iCodigo
@ 09,42 SAY inome
@ 09,42 get inome picture'@!'
@ 10,42 get idatas picture'99/99/99'
read
j=recno()
go top
LOCATE for codigo=icodigo.and.datas=idatas
if found()
@ 23,5 say 'achei um'
if lastkey()=27
return 0
endif
* loop
endif
edatas=ctod(idatas)
z=dow(edatas)
dia()
@ 10,42 say edatas pict'XX/XX/XX'
@ 11,42 say ' '
@ 11,42 say dia
@ 12,42 get ientrou picture'99:99'
@ 13,42 get isaiu picture'99:99'
@ 14,42 get ialmoco
read
aenhora=substr(ientrou,1,2)
aenminu=substr(ientrou,4,2)
asaihora=Substr(isaiu,1,2)
asaiminu=substr(isaiu,4,2)
eenhora=val(aenhora)
eenminu=val(aenminu)
esaihora=val(asaihora)
esaiminu=val(asaiminu)
imintot=((esaihora-eenhora)*60+(esaiminu-eenminu))-ialmoco
ihoras=int(imintot/60)
iminutos=(imintot/60-int(imintot/60))*60
IF diasem="SABADO".or.diasem="DOMINGO"
imintot2 =imintot
ihoras =0
iminutos =0
ihoras2 =int(imintot2/60)
iminutos2=imintot2-ihoras2*60
imintot=0
ELSE
if imintot>=510 && aqui ve se tem hora extra
imintot2=imintot-510
imintot=510
endif
ihoras=int(imintot/60)
iminutos=int((imintot/60-int(imintot/60))*60)
ihoras2=int(imintot2/60)
iminutos2=int((imintot2/60-int(imintot2/60))*60)
if lastkey()=27.or.icodigo=space(8)
return 0
endif
centra("Confirma Dados <S/N> ?",23)
conf()
set color to
limpa23()
do case
case lastkey()=27
return 0
case conf="S"
append blank
repl codigo with icodigo
repl nome with inome
repl datas with idatas
repl diasem with dia
repl entrou with ientrou
repl saiu with isaiu
repl mintot with imintot
repl mintot2 with imintot2
repl horas with ihoras
repl horas2 with ihoras2
repl minutos with iminutos
repl minutos2 with iminutos2
repl almoco with ialmoco
exit
endcase
endif
repete=repete+1
enddo
SET COLOR TO
RETURN 0
OI Aqui é o Veio Modernel
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Bom, usando o Clipper puro, sem LIBs externas... o exemplo do Maligno é perfeito, mas no exemplo dele tem que alterar o seguinte código:
para
Abraços,
Código: Selecionar todos
return if(Val(Left(cHora,2)) <= 23 .and. Val(Right(cHora,2)) <= 59Código: Selecionar todos
return (Val(Left(cHora,2)) <= 23 .and. Val(Right(cHora,2)) <= 59)Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Hoje eu to meio zureta mesmo. Penso numa coisa e escrevo outra. Esse IF não tinha nada a ver mesmo. Obrigado pela correção, Toledo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!

