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

Erro ao digitar uma data inválida


Fireboard

Pergunta

Estou com um problema quando digito uma data inválida. Aparece uma mensagem do próprio Delphi dando erro:

"Project P_Recibo.exe raised exception class EConvertError with message "11/13/2007" is not a valid date'. Process Stopped. Use Step or Run to continue".

Neste exemplo digitei uma data inválida para dar o erro.

Eu queria que fosse exibido uma mensagem do meu programa que a data é inválida e não a mensagem do Delphi.

O código que inseri no evento on exit do objeto Dbdata foi:

try
    StrToFloat((Sender as tdbedit).Text);  // não atribuirá a ninguém o resultado, é apenas para tentar obter o erro
  except
    on E:Exception do
    begin
      E.Message := 'Valor digitado não é válido';
      raise;
    end;
 end;

Obs.: eu peguei esse código em um post aqui no site para ver se dava certo no meu programa, mas vai direto para a mensagem do Delphi e não do meu programa. Como eu faço para corrigir isso?

Outra pergunta, no Delphi há alguma função para verificar se a data é válida?, exemplo, no Visual Basic há a função IS DATE, que verifica se o conteúdo de um objeto é uma data válida (if is date(edit1.text) = true), ser não me engano a sintaxe é essa.

Obrigado

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Outra pergunta, no Delphi há alguma função para verificar se a data é válida?,

unit UData;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function tbStrIsDate(const S: string): boolean;
begin
  try
  StrToDate(S);
  Result := true;
  except
  Result := false;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if tbStrIsDate(Edit1.Text) then
  ShowMessage(Edit1.Text + ' é data válida.')
else
  ShowMessage(Edit1.Text + ' NÃO é data válida.');

end;

end.

OBS: Se rodar o programa em ambiente delphi, a exceção será respondida pelo delphi , mas se rodar o programa sem o delphi, a mensagem será dada pelo programa

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
OBS: Se rodar o programa em ambiente delphi, a exceção será respondida pelo delphi , mas se rodar o programa sem o delphi, a mensagem será dada pelo programa

Valeu fera, funcionou, mas mesmo eu chamando pelo executável quando forço uma data inválida para fazer a verificação, a mensagem de erro vem do Delphi e não do meu programa, como no exemplo que você me passou:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if tbStrIsDate(Edit1.Text) then
  ShowMessage(Edit1.Text + ' é data válida.')
else
[b]  ShowMessage(Edit1.Text + ' NÃO é data válida.');[/b]

end;

Não tem problema, o importante é funcionar, e funcionou, a única dúvida que ficou foi essa de ser exibida a mensagem de erro do Delphi.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
a única dúvida que ficou foi essa de ser exibida a mensagem de erro do Delphi.

essa é a mensagem que o delphi te dá ( em ingles ) quando um erro gera uma exceção e voce esta rodando o seu programa em ambiente delphi, mesmo que voce tenha um tratamento para este erro.... mas quando voce roda o programa fora do ambiente dephi, e tem esse tratamento do erro, ai a mensagem sera dada pelo seu programa e não pelo delphi.

se voce rodar o exemplo ( somente o Programa executavel ) que te passei fora do delphi, vera que a mensagem sera a do programa e não do delphi.

abraço

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...