[delphi-br] Ajuda de vocês, trabalhando com pacotes.
Pessoal tenho a seguinte situação: Meu sistema é dividido em pacotes. FormPrincipal.exe Pacote1.Bpl Pacote2.Bpl Pacote3.Bpl Pacote4.Bpl Pacote5.Bpl Pacote6.Bpl Pacote7.Bpl Pacote8.Bpl Tenho uma classe x que é instanciada no formulário principal, essa classe tem algumas informações do tipo parametros do sistema, informações do usuário que está logado etc... ,porem essa classe precisa ser conhecida e acessada por todos os pacotes, alguem pode me dar uma ideia de como fazer os pacotes conhecerem e acessar essa classe no Form pincipal. Obrigado a todos. At. Ricardo Lima [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Ajuda de vocês, trabalhando com pacotes.
Uma das maneiras seria vc criar uma variavel desta classe dentro da unit e na criacao vc passar esta classe como parametro. Como sempre vai receber o mesmo valor e estara apontando para o mesmo endereço de memoria isto não consome processamento. Eduardo Ricardo Lima Mariz escreveu: Pessoal tenho a seguinte situação: Meu sistema é dividido em pacotes. FormPrincipal.exe Pacote1.Bpl Pacote2.Bpl Pacote3.Bpl Pacote4.Bpl Pacote5.Bpl Pacote6.Bpl Pacote7.Bpl Pacote8.Bpl Tenho uma classe x que é instanciada no formulário principal, essa classe tem algumas informações do tipo parametros do sistema, informações do usuário que está logado etc... ,porem essa classe precisa ser conhecida e acessada por todos os pacotes, alguem pode me dar uma ideia de como fazer os pacotes conhecerem e acessar essa classe no Form pincipal. Obrigado a todos. At. Ricardo Lima [As partes desta mensagem que não continham texto foram removidas] ___ Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! http://br.mobile.yahoo.com/mailalertas/ -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Ajuda de vocês, trabalhando com pacotes.
A solução mais simples é utilizar compartilhar esta classe em todos os pacotes. Pra isso utilize vinculo estático de pacotes, trabalhando normalmente com a classe em cada unit. -- Marcos Douglas Mensagem Original From: Ricardo Lima Mariz [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br Sent: Seg, Agosto 28, 2006 11:19 am Subject: Re: [delphi-br] Ajuda de vocês, trabalhando com pacotes. Pelo que vi acho a melhor opção utilizar interfaces, porem ocorre outro problema. Como consigo acessar os metodos/propriedades de um objeto conhecendo somente a inteface que o mesmo implementa. - Original Message - From: Elazar Dornelles Ceza To: delphi-br@yahoogrupos.com.br Sent: Monday, August 28, 2006 10:52 AM Subject: RES: [delphi-br] Ajuda de vocês, trabalhando com pacotes. Ricardo Lima [**] Pessoal tenho a seguinte situação: Meu sistema é dividido em pacotes. FormPrincipal.exe Pacote1.Bpl Pacote2.Bpl Pacote3.Bpl Pacote4.Bpl Pacote5.Bpl Pacote6.Bpl Pacote7.Bpl Pacote8.Bpl Tenho uma classe x que é instanciada no formulário principal, essa classe tem algumas informações do tipo parametros do sistema, informações do usuário que está logado etc... ,porem essa classe precisa ser conhecida e acessada por todos os pacotes, alguem pode me dar uma ideia de como fazer os pacotes conhecerem e acessar essa classe no Form pincipal. [*] Ao que entendi tenho duas sugestões. 1-Voce pode usar uma interface para implementar esta classe 2-Voce pode tornar este pacote principal como 'requerido' por todos os outros pacotes e usar o Uses com a unit que tem esta classe nas units dos outros pacotes... Atenc. Elazar ___ O Yahoo! está de cara nova. Venha conferir! http://br.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Ajuda de vocês, trabalhando com pacotes.
Vc tem que ter uma variável/instância do tipo da Interface, mas tem que dar um Create com o tipo do Objeto. Seguindo o código do Elazar, veja: var Intf: IMinhaInterface; begin Intf := TMinhaClasse.Create; Intf.Color := clBlue; {...} end; Vc tb pode definir a variável como um tipo de classe mas utilizar esta mesma varivel para passar como parâmetro, mas utilizando-a como interface... Vai depender do seu problema. -- Marcos Douglas Mensagem Original From: Ricardo Lima Mariz [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br Sent: Seg, Agosto 28, 2006 12:08 pm Subject: Re: [delphi-br] Ajuda de vocês, trabalhando com pacotes. Certo eu entendi como funiona, o problema é o seguinte, trabalho com pacotes vou ter um pacote que vai ter a interface IMinhaInterface, e tenho outros pacotes que vão implementar essa interface, agora como eu faço pra acessar um Objeto qualquer conhecendo somente a interface que ele implementa. Exemplo Tenho a imterface IMinhaInterface, e tenho o objeto MeuObjeto que implementa IMinhaInterface. Agora quero acessar um metodo do MeuOBjeto conhecendo somente IMinhaInterface. Algo do tipo IMinhaInterga(UmObjetoQualquer).MetodoDaInterface; Entendeu? - Original Message - From: Elazar Dornelles Ceza To: delphi-br@yahoogrupos.com.br Sent: Monday, August 28, 2006 11:49 AM Subject: RES: [delphi-br] Ajuda de vocês, trabalhando com pacotes. Ricardo [***] Pelo que vi acho a melhor opção utilizar interfaces, porem ocorre outro problema. Como consigo acessar os metodos/propriedades de um objeto conhecendo somente a inteface que o mesmo implementa. [] Voce declara na Interface procedimentos/funções para ajustar/ler as propriedades. Ex. IMinhaInterface = Interface function GetColor : TColor; procedure SetColor( Value : Tcolor); property Color : TColor read GetColor write Setcolor; end; TMinhaClasse = class( TInterfacedObject, IMinhaInterface) private FColor : TColor; protected public function GetColor : TColor; procedure SetColor( Value : TColor); end; { TMinhaClasse } function TMinhaClasse.GetColor: TColor; begin Result := FColor; end; procedure TMinhaClasse.SetColor(Value: Tcolor); begin FColor := Value; end; Atenc. Elazar; ___ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RES: [delphi-br] Ajuda de vocês, trabalhando com pacotes.
Ricardo; Marco Douglas; [] Vc tem que ter uma variável/instância do tipo da Interface, mas tem que dar um Create com o tipo do Objeto. Seguindo o código do Elazar, veja: var Intf: IMinhaInterface; begin Intf := TMinhaClasse.Create; Intf.Color := clBlue; {...} end; Vc tb pode definir a variável como um tipo de classe mas utilizar esta mesma varivel para passar como parâmetro, mas utilizando-a como interface... Vai depender do seu problema. [] Isso ai. Um acrescimo: Voce poderia ter nos seus pacotes (não o principal) um procedimento do tipo Procedure CarregarModulo( Objeto : IMinhaInterface); Ai a cada modulo carregado ou ao momento que achar necessário o pacote utilizar dos procedimento da interface, voce chama este procedimento passando como parametro o objeto instanciado, como mostra o douglas; Ex.. No pacote.. {} Procedure CarregarObjeto(Objeto : IMinhaInterface); Exports CarregarObjeto; Procedure CarregarObjeto(Objeto : IMinhaInterface); begin vObjeto := Objeto; end; {** quando for utilizar alguma coisa do objeto no pacote voce usa vObjeto.Color := clWhite //por exemplo. ***} {* no principal, ou no exe voce cria o objeto como o dougas demostra e depois faz uma chamada ao procedimento CarregarObjeto dos pacotes passando o mesmo como parametro, assim os pacotes 'podem' usar os procedimentos do objeto. Da pra usar o GetProccAddress pra pegar uma referencia ao procedimento CarregaObjeto definido nos pacotes (como se usa com as dll´s) **} ___ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html