duvida de iniciante
Qual é mesmo a diferenca entre o USES da interface e o USES da implementation ? Quero dizer qual a difenca em declarar uma unit entre estas 2 areas.
Obrigado
Obrigado
Felipeiw
Curtidas 0
Melhor post
Osocram
19/08/2009
vamos supor que vc crie um unit MinhasClasses e aqui tem TMinhaClasse1, TMinhaClasse2
Agora vamos supor que vc adiciona um novo form no projeto....
se vc for declarar um metodo que utilize uma dessas classes por exemplo
Para isto funcionar [b:fa93622e5d]obrigatoriamente[/b:fa93622e5d] tem q ser declarado MinhasClasses na [b:fa93622e5d]USES da interface[/b:fa93622e5d] .
Agora se vc fizer o seguinte
Neste caso tanto faz se vc declarou na uses Interface ou Implementation.
--------------------------------------------
o bloco funciona visualmente assim
unit Unit1;
interface <---- tudo daqui p baixo pertence ao inteface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type <- tudo que usar aqui no type tem que estar
TForm1 = class(TForm) no uses da inteface (repare que o outro
private uses nem foi verificado ainda)
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
MinhasClasses; <- Classes declaradas aqui não serão usadas daqui
para cima, e sim somente daqui p baixo
{$R *.dfm}
end.
------------------------------------------------------------------------
Agora vamos supor que vc adiciona um novo form no projeto....
se vc for declarar um metodo que utilize uma dessas classes por exemplo
Function GetClasse:TMinhaClasse1;
Para isto funcionar [b:fa93622e5d]obrigatoriamente[/b:fa93622e5d] tem q ser declarado MinhasClasses na [b:fa93622e5d]USES da interface[/b:fa93622e5d] .
Agora se vc fizer o seguinte
Function GetClasse:string; begin result := TMinhaClasse1.Nome; end;
Neste caso tanto faz se vc declarou na uses Interface ou Implementation.
--------------------------------------------
o bloco funciona visualmente assim
unit Unit1;
interface <---- tudo daqui p baixo pertence ao inteface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type <- tudo que usar aqui no type tem que estar
TForm1 = class(TForm) no uses da inteface (repare que o outro
private uses nem foi verificado ainda)
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
MinhasClasses; <- Classes declaradas aqui não serão usadas daqui
para cima, e sim somente daqui p baixo
{$R *.dfm}
end.
------------------------------------------------------------------------
Desculpe, mas eu nao entendi.
Abs
GOSTEI 1
Mais Respostas
Osocram
19/08/2009
Cada uses serve p o escopo dele....
´Estruturalmente´ dizendo:
Tudo que esta abaixo do uses é o escopo dele....
Explicando melhor Se vc vai usar uma variavel public no seu form (veja q essa declaração fica entre os 2 uses). Então ele esta dentro do escopo do primeiro uses mas esta fora do escopo do segundo. Então vc teria que declarar no primeiro uses.
Resumindo se vc quer usar classes somente nas implementações usa somente no segundo uses.
Se precisar da classe na Declaração tbm então usa no primeiro uses.
Basicamente é isso.
Tem o detalhe tbm da hora em que eles são instanciados. Mas não sei bem na teoria... so sei no Achometro como deve funcionar.
Mas o que puder declarar no segundo uses seria melhor.
´Estruturalmente´ dizendo:
Tudo que esta abaixo do uses é o escopo dele....
Explicando melhor Se vc vai usar uma variavel public no seu form (veja q essa declaração fica entre os 2 uses). Então ele esta dentro do escopo do primeiro uses mas esta fora do escopo do segundo. Então vc teria que declarar no primeiro uses.
Resumindo se vc quer usar classes somente nas implementações usa somente no segundo uses.
Se precisar da classe na Declaração tbm então usa no primeiro uses.
Basicamente é isso.
Tem o detalhe tbm da hora em que eles são instanciados. Mas não sei bem na teoria... so sei no Achometro como deve funcionar.
Mas o que puder declarar no segundo uses seria melhor.
Qual é mesmo a diferenca entre o USES da interface e o USES da implementation ? Quero dizer qual a difenca em declarar uma unit entre estas 2 areas.
Obrigado
GOSTEI 0
Felipeiw
19/08/2009
Desculpe, mas eu nao entendi.
Abs
Abs
GOSTEI 0