plikts Postado Junho 1, 2005 Denunciar Share Postado Junho 1, 2005 oi!!!Eu tenho uma dúvida (entre as nilhares, ), um procedimento é considerado aki: ... type TForm1 = class(TForm) Edt1: TEdit; procedure BtnFecharClick(Sender: TObject); procedure BtnLimparClick(Sender: TObject); ou aki: procedure TForm1.BtnAdiClick(Sender: TObject); begin Valor1:=StrToFloat(Edt1.Text); Valor2:=StrToFloat(Edt2.Text); Edt3.Text:=FloatToStr(Valor1+Valor2); Storage:=StrToFloat(Edt3.Text); end;ou este últimko seria a implementação do código no procedimento??obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 1, 2005 Denunciar Share Postado Junho 1, 2005 O primeiro é a declaração (protótipo) do procedimento e o segundo é a respectiva implementação do mesmo (ou seja, esse segundo é realmente o que você suspeitava).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 plikts Postado Junho 1, 2005 Autor Denunciar Share Postado Junho 1, 2005 valeu..agora tenho outra pergunta...no livro q eu tenho esta escrito isso:"No Code Explorer observamos o nome da procedure, identificando qual o objeto e o evento que dará início à execução do código, e onde está localizado este objeto.O parâmetro SENDER informa ao Delphi qual componente recebeu o evento que chamou a execução deste procedimento"TFrm.BtnIniciarClick(Sender:TObject) eu não entendi a parte q diz: "O parâmetro SENDER informa ao Delphi qual componente recebeu o evento que chamou a execução deste procedimento"preciso de ajuda!!obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 1, 2005 Denunciar Share Postado Junho 1, 2005 "Sender" ou "remetente" é justamente uma referência ao objeto cujo evento chamou esse procedimento. Se você colocar dois botões no form e definir o evento OnClick de *ambos* para o *mesmo* procedimento, e colocar o código abaixo no procedimento... showmessage((Sender as TButton).Name);... você verá que o código é um só, porém ao clicar no primeiro botão ele mostrará o nome do primeiro botão (Button1, se você não mudar); e, ao clicar no segundo botão, ele mostrará o nome do segundo botão (Button2, se você não mudar). Ambos estarão chamando o mesmo procedimento, porém o argumento Sender será definido para aquele que chamou (ora o botão 1, ora o botão 2). Sacou? Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 plikts Postado Junho 2, 2005 Autor Denunciar Share Postado Junho 2, 2005 Saquei.... agora outra pergunta aproveitando...qual o sentido de se colocar uma variável aki :TFrm.BtnIniciarClick(Var OI:Integer Sender:TObject) outro exemplo procedure DefaultHandler(var Message)Sei q existem variáveis a nível de projeto, de Unit e de Procedimento (são "destruídas" logo depois de seu uso).. mas e nesse caso serve para q??obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kikonanet Postado Junho 3, 2005 Denunciar Share Postado Junho 3, 2005 Olá,Sei q existem variáveis a nível de projeto, de Unit e de Procedimento (são "destruídas" logo depois de seu uso).. mas e nesse caso serve para q??Esse VAR na frente da variável, significa que essa variável vai retornar algo. Pode ser inteiro, string, boolean ... Depende do tipo que ela é...Abs.Kiko Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 plikts Postado Junho 3, 2005 Autor Denunciar Share Postado Junho 3, 2005 desculpa mas não entendi muito bem, essa variável não é para armazenar dados??obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 4, 2005 Denunciar Share Postado Junho 4, 2005 desculpa mas não entendi muito bem, essa variável não é para armazenar dados?? Sim, ela armazena, porém ela é passada por referência. Isso significa que se o valor dela for alterado dentro da função, essa alteração se refletirá também fora da função. Imagine uma procedure assim:procedure Incrementa(n : integer); begin n := n+1; end; Se você fizer (considere 'a' como um inteiro)... a := 2; Incrementa(a); ShowMessage(inttostr(a)); ... verá que o valor de 'a' permanece 2. Isso porque nesse caso o parâmetro é passado por valor. Isso significa que é feita uma cópia do 2 (valor de 'a') em 'n' no momento em que a função é chamada. Já se a procedure fosse: procedure Incrementa(var n : integer); begin n := n+1; end;E você fizesse o mesmo teste acima, veria que 'a' teve seu valor mudado. Isso porque ao invés de se fazer uma cópia do valor de 'a' em 'n', 'n' seria uma referência à 'a' (ou seja, tudo que acontecer com 'n' acontecerá com 'a', pois ambos apontam para a mesma posição em memória). É para isso que serve aquele Var ali. Sacou? Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 plikts Postado Junho 5, 2005 Autor Denunciar Share Postado Junho 5, 2005 desculpa mas não entendi muito bem...tem como dar um exemplo funcional??? não consegui fazer algo com isso....obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 5, 2005 Denunciar Share Postado Junho 5, 2005 desculpa mas não entendi muito bem...tem como dar um exemplo funcional??? não consegui fazer algo com isso.... Na minha opinião, aquele dali já é um exemplo funcional... Bom, talvez você não tenha conseguido é implementá-lo, então segue um exemplo pronto: http://www.graymalkin.globalhosts.com.br/stuff/Var.zipDescompacte e abra o projeto, execute-o e veja o que ocorre em cada um dos botões. Depois, leia novamente o tópico.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
plikts
oi!!!
Eu tenho uma dúvida (entre as nilhares, ), um procedimento é considerado aki:
ou aki:ou este últimko seria a implementação do código no procedimento??
obrigado!
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.