Lucio Matias Posted April 6, 2009 at 11:37 PM Report #255630 Posted April 6, 2009 at 11:37 PM 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.
Nat0ne Posted April 7, 2009 at 02:20 PM Report #255701 Posted April 7, 2009 at 02:20 PM 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
M6 Posted April 7, 2009 at 04:05 PM Report #255712 Posted April 7, 2009 at 04:05 PM 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."
Nat0ne Posted April 7, 2009 at 04:22 PM Report #255716 Posted April 7, 2009 at 04:22 PM 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?
M6 Posted April 7, 2009 at 04:40 PM Report #255719 Posted April 7, 2009 at 04:40 PM 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."
Nat0ne Posted April 7, 2009 at 04:50 PM Report #255722 Posted April 7, 2009 at 04:50 PM 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
M6 Posted April 7, 2009 at 04:54 PM Report #255725 Posted April 7, 2009 at 04:54 PM 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."
Nat0ne Posted April 7, 2009 at 05:24 PM Report #255733 Posted April 7, 2009 at 05:24 PM Sem tirar nem pôr, foi mesmo isso 😞
M6 Posted April 7, 2009 at 08:55 PM Report #255776 Posted April 7, 2009 at 08:55 PM 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."
NCS_One Posted April 7, 2009 at 11:03 PM Report #255809 Posted April 7, 2009 at 11:03 PM Boas. Se sao muitos ifs deviam tentar usar o case. Se a vida te voltar as costas aproveita e apalpa-lhe o cu.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now