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

Sign in to follow this  
Lucio Matias

Dúvida Exit

Recommended Posts

Lucio Matias

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.

Share this post


Link to post
Share on other sites
Nat0ne

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

Share this post


Link to post
Share on other sites
M6

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.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Nat0ne

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? 

Share this post


Link to post
Share on other sites
M6

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;


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Nat0ne

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

Share this post


Link to post
Share on other sites
M6

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.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
M6

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


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
NCS_One

Boas.

Se sao muitos ifs deviam tentar usar o case.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.