Ir para conteúdo

POWERED BY:

Arquivado

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

marciocorbolan

Parar a execução do programa e voltar para o inicio dele!

Recommended Posts

Boa tarde,

 

To com uma duvida, parece ser besta... mas como não manjo de Delphi, a duvida esta dando dor de cabeça hehehehe

 

To aqui com meu livro e no exercício de matriz dinâmica eu queria fazer uma validação, qual impeça o usuário de inserir 0 e 1.

Caso o usuário inserise um desses dois valores exibi se uma mensagem de erro e o programa seria parado e reiniciado.

 

Eu comecei, só a parte do parar que eu não faço idéia de como fazer!

 

procedure TForm1.AceitarClick(Sender: TObject);
var
  RETORNO: String;
  LINHA, COLUNA: Integer;
  I, J, X: Byte;
begin
  NR_LINHA := StrToInt(PegaLinha.Text);
  NR_COLUNA := StrToInt(PegaColuna.Text);

  // Verifica tamanho da matriz

  if ((NR_LINHA <= 0) or (NR_COLUNA <= 0))  then
	begin
	  ShowMessage('Não é possivel atribuir essa medida para a matriz!');
	  Break; //PENSEI QUE O BREAK PARASE A EXECUÇÃO
	end
  else if ((NR_LINHA >= 1) and (NR_COLUNA <= 1))  then
	begin
	  ShowMessage('Não é possivel atribuir essa medida para a matriz!');
	  Break; //PENSEI QUE O BREAK PARASE A EXECUÇÃO
	end;

 

Como podem ver eu tentei usar o Break, mas a tentativa foi horrenda hehehehe

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

TIA0, substitua o break por exit após os showmessages para sair da rotina no onclick. O break só interrompe laços de repetição (for, while, repeat)... exemplo:

 

For I:= 0 to 10 do
begin
	IF I = 2 then
		break;
	showmessage('I é igual a ' + IntToStr(I));
end;

O código acima mostraria no showmessage o valor do I = 0 e I=1.

 

No seu caso, usasse o Exit:

 

procedure TForm1.AceitarClick(Sender: TObject);
var
  RETORNO: String;
  LINHA, COLUNA: Integer;
  I, J, X: Byte;
begin
  NR_LINHA := StrToInt(PegaLinha.Text);
  NR_COLUNA := StrToInt(PegaColuna.Text);

  // Verifica tamanho da matriz

  if ((NR_LINHA <= 0) or (NR_COLUNA <= 0))  then
	begin
	  ShowMessage('Não é possivel atribuir essa medida para a matriz!');
	  Exit; //Sai da rotina após mostrar a mensagem
	end
  else if ((NR_LINHA >= 1) and (NR_COLUNA <= 1))  then
	begin
	  ShowMessage('Não é possivel atribuir essa medida para a matriz!');
	  Exit; //Sai da rotina após mostrar a mensagem
	end;

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Chrnos, funcionou aqui beleza!

 

Agora to com uma outra duvida, como ele força a conversão para inteiro o programa da erro quando a pessoa deixa o campo em branco.

Teria como validar se a variavel está vazia mesmo depois da conversão para inteiro?

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o try except.

 

try
	NR_LINHA := StrToInt(PegaLinha.Text);
except //Se der erro na conversão, executa a partir daqui
	Showmessage('Informe o número de linhas para continuar...');
	PegaLinha.Text := '0';
	exit;
end;

try
	NR_COLUNA := StrToInt(PegaColuna.Text);
except //Se der erro na conversão, executa a partir daqui
	Showmessage('Informe o número de colunas para continuar...');
	PegaColuna.Text := '0';
	exit;
end;

[]'s

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.