Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao usar a data


Fireboard

Pergunta

Pessoa, inseri uma procedure para que quando o sistema iniciar verifique pela data se expirou, o código é o seguinte:

procedure TFrmPrincipal.verifica_data;
begin
   if FormatDateTime('yyyy/mm/dd',date) > formatdatetime('aaaa/mm/dd',06/02/2008) then
   begin
     Application.MessageBox('Atenção'+#13+'O programa expirou, entre em contato com o fabricante do software','Expirou o programa',MB_ICONINFORMATION+MB_OK);
     Application.Terminate;
   end;
end;

No exemplo acima, sugeri que a data limite seja 06/02/2008 (por exemplo), só que o programa não faz essa verificação, depurei o sistema e na linha em que devia fazer a conta entre as datas aparece a mensagem "date=inaccessible value".

Como eu faço para resolver isso?

Vocês me recomendariam um jeito melhor de fazer alguma amarração no programa para informar ao usuário que o programa expirou?

Obrigado.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Como eu faço para resolver isso?
Acho que é só uma questão de você descer ao planeta terra... :D

Fireboard, você só deu uma bobeada no código. Olha só o que você colocou no if:

FormatDateTime('yyyy/mm/dd', date) > formatdatetime('aaaa/mm/dd', 06/02/2008)

fora a questão da string de formatação, ainda não é possível você passa a data da forma como fez.

Digamos que para compilar e "funcionar", deveria ficar assim:

FormatDateTime('yyyy/mm/dd', date) > formatdatetime('yyyy/mm/dd', StrToDate('06/02/2008'))

Mas, na verdade não há necessidade de você transformar a data para string de modo a fazer uma correta comparação de data (o que ocorre usando o formato yyyy/mm/dd). Além do mais, utilizar StrToDate, implica em você passar o texto da data na seqüência definida em ShortDateFormat que tem seu formato baseado nas configurações locais, podendo ser m/d/y, d/m/y, e y/m/d. Isto seria ruim, porque seu programa não ficaria "genérico".

Uma vez que o campo TDataTime é um float, então você pode comparar os números diretamente. Assim, ficaria mais apropriado você trabalhar com este tipo e seu if ficaria assim:

if Date > EncoceDate(2008, 2, 6) then

EncodeDate está declarada na unit SysUtils (Delphi 7), assim como Date.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eu agradeço pela ajuda, pra quem sabe pode parecer simples o código, mas eu não sabia resolver, inclusive em utilizar a função "EncodeDate", eu não tinha a mínima idéia de que podia ser feito assim.

Em relação ao código que postei:

FormatDateTime('yyyy/mm/dd', date) > formatdatetime('aaaa/mm/dd', 06/02/2008

eu digitei errado ao postar o tópico, no meu código não está como "aaaa/mm/dd".

Link para o comentário
Compartilhar em outros sites

  • 0
Eu agradeço pela ajuda, pra quem sabe pode parecer simples o código, mas eu não sabia resolver, inclusive em utilizar a função "EncodeDate", eu não tinha a mínima idéia de que podia ser feito assim.
Ninguém disse que é fácil, não. Pelo menos quando se está começando. ;)

Mas, se você não tiver dificuldades com inglês, vai a dica: utilize o help do Delphi - é muito bom!!

Se você procura por Date (tem que "perguntar" em inglês), vai ver na lista um monte de opções relacionadas a datas. Segue rolando até que vai achar DateTime routines, e acessando ela você vai encontrar todo tipo de função para manipular datas.

Pelo menos foi assim que aprendi Turbo Pascal (vixe faz tempo), Delphi e tudo o mais que resolvo aprender (usando o help), se bem que é verdade que hoje a net tem tudo que se procura.

Quanto a sua dúvida, conseguiu resolver então?

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...