• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Lucio Matias

Dúvida Exit

11 mensagens neste tópico

Boas !

Estou a ter aqui um erro com a instrução 'exit' : "Statement expected, but expression of type TMenuItem found "..

Já tentei de tudo, mas o erro não desaparece e nao sei se quer o que é o TMenuItem..

Agradecia ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Esta duvida surge de um trabalho que eu e o Lucio estamos a fazer em Delphi 4. E assim vamos por a dúvida de outra maneira.

Num "procedure" é necessário sair do mesmo dentro de uma determinada condição (com 'if's). O ideal seria utilizar algo tipo o "return" na linguagem C. Então experimentámos o "exit", que é sugerido em qualquer site de delphi, só que aparece aquele erro acima descrito. E o mais estranho é que estamos a usar um "exit" numa "function" e aí funciona.

Assim, agradeciamos que alguem desse uma susgestão para resolver o erro, ou então, nos dessem outra forma de sair do "procedure".

Cumps

Nat0ne & Lucio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Exit funciona, exemplo: http://delphi.about.com/library/rtl/blrtlExit.htm , estão a fazer qualquer outra coisa mal algures.

Mostra o código desse procedimento por favor.

Quanto ao TMenuItem, é um objecto do tipo item de menu, na prática é uma opção de um menu, por exemplo o "Exit" do menu "File" de uma aplicação.

Se queres sair do procedimento de outra forma, é tão simples quanto teres um caminho alternativo dentro do procedimento que nada faz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para não estar aqui a por muito codigo, o problema existe apenas com aquele proc:

---------------------------------------

type

  TFormC = class(TForm)

  .

  .

  .

  procedure Proc(sender: TObject);

implementation

{$R *.DFM}

.

.

.

procedure TFormC.Proc(sender: TObject);

begin

  exit;

end;

---------------------------------------------

Não percebi a dica do caminho alternativo. Como é que o implemantarias? Chamas outro procedimento? 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Verifica se não tens no teu código uma variável cujo nome é exit.

Quanto ao caminho alternativo, o que estava a dizer é que se tens um conjunto de IFs, basta que tenhas uma condição que te permita seleccionar um ramo que não execute código.

Por exemplo, imagina que tens um procedimento que mostra o quadrado de um valor mas quando o valor de input é 1 não faz nada, pode fazer de duas formas:

1. Não faz nada de forma explicita;

procedure quad(i: integer);

begin

    if (i = 1) then

      exit;

    else

      writeln(i * i);

end;

2. Não faz nada de forma implicita;

procedure quad(i: integer);

begin

    if (i <> 1) then

      writeln(i * i);

end;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, tinhamos mesmo uma variavel declarada "Exit: TMenuItem;" que não sabemos como lá foi parar. Foi realmente de principiantes.

E quanto ao caminho já percebemos onde querias chegar, mas no nosso código não deve ser possivel porque temos ifs dentro de ifs e o procedimento tem de ser interrompido segundo várias condições.

De qualquer maneira já funciona como pretendido e agradecemos-te toda a ajuda e informação extra.

Cumprimentos

Nat0ne & Lucio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quase de certeza de que a variável Exit foi ai parar porque criaram uma opção de menu para sair da aplicação (mas isto sou só eu a especular)...

Quanto ao caminho, é sempre possível em qualquer código, pode é ficar escrito de tal forma que não é desejável por razões de legibilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como diria um amigo meu, "são muitos anos a virar frangos" :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora