Jump to content

Recommended Posts

Posted

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.

Posted

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

Posted

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."

 

Posted

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? 

Posted

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."

 

Posted

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

Posted

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."

 

Posted

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."

 

  • 1 month later...

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
×
×
  • Create New...

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.