Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

deio

cancelar mensagem de erro

Recommended Posts

ola todos, tenho um codigo para criar indices em runtime, toda vez q ele termina aparece uma mensagem de erro, mas o codigo funciona mesmo assim, entaum gostaria de saber como eu faço para cancelar a mensagem de erro, fazer com q ela naum apareça?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deio post seu código p/ a gente poder analisar melhor, antes disso coloque um break point p/ você poder ver em que momento exato ocorre esse erro. Como você disse ele faz o procedimento mais em algum lugar ele esta retornando o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando um componente chamado TDBF, q abre database do tipo dbf....

Começa aqui, nessa parte naum tem erro, soh to colocando pra saber oq tem no combobox1 e 2 :

 

procedure TForm1.Button5Click(Sender: TObject);
var
x:integer;
begin
opendialog1.Execute;
dbf1.TableName := opendialog1.FileName;//escolhe o arquivo do dbf q eh pra abrir
dbf1.Active:= true;//ativa a tabela
combobox2.Items := dbf1.FieldDefList;//faz com q o combobox receba o nome das colunas da tabela
  for x:=0 to ComboBox2.Items.Count - 1 do
	ComboBox1.Items.Add(ComboBox2.Items[x] + '.NDX');// preenche o combobox1 com o nome dos indices
end;

a mensagem de erro ocorre aki :

 

procedure TForm1.Button1Click(Sender: TObject);
var
x: integer;
begin
dbf1.Close;
dbf1.Exclusive := true;
dbf1.Open;
  for x:=0 to ComboBox2.Items.Count -1 do
	dbf1.AddIndex( combobox2.Items.Strings[x]+'.NDX', dbf1.FieldDefs[x].name,[]);//comando para criar os indices, com o nome da coluna mais a extensão .NDX  , arquivo de indice
	dbf1.OpenIndexFile(dbf1.FilePathFull + combobox1.Items.Strings[x]);// salva o indice para naum precisar ficar criando o tempo todo
end;

Naum sei se vai ajudar mas aqui ta o codigo do arquivo do componente indicando qndo aparece a mensagem :

 

procedure TIndexFile.CreateIndex(FieldDesc, TagName: string; Options: TIndexOptions);
var
  tagNo: Integer;
  fieldType: Char;
  TempParser: TDbfIndexParser;
begin
  // check if we have exclusive access to table
  TDbfFile(FDbfFile).CheckExclusiveAccess;
  // parse index expression; if it cannot be parsed, why bother making index?
  TempParser := TDbfIndexParser.Create(FDbfFile);
  try
	TempParser.ParseExpression(FieldDesc);
	// check if result type is correct
	fieldType := 'C';
	case TempParser.ResultType of
	  etString:; { default set above to suppress delphi warning }
	  etInteger, etLargeInt, etFloat: fieldType := 'N';
	else
	  raise EDbfError.Create(STRING_INVALID_INDEX_TYPE);//essa linha aqui abre a mensagem de erro, faz parte do componente, entaum acho melhor naum mexer nele se naum pode bugar o componente....
	end;
  finally
	TempParser.Free;
  end;

a mensagem de erro diz q soh e valido indices do tipo string e float, ou algo do genero....

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que esta havendo é uma excessão e não um erro, você pode optar por desabilitar no delphi essas excessões, mas será de forma geral, todas excessões que ocorrerem sem paralizar o projeto, não será exibida.

 

Menu Tools/debugger options/language exceptions/stop on delphi exceptions

 

 

esperto ter ajudado..

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não apresentará o erro, faça o teste..

 

abs

testei varias vezes e ainda apareceu o erro, soh naum parou o programa....

 

naum teria algum comando do tipo : do not showmessage error ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.