Jhosef, Com aplicações modularizadas em Delphi eu costumo agir da seguinte maneira:
0) O executável principal é compilado com a opção 'Build with runtime packages'. Dessa forma ele fica muito pequeno. Nem precisa ficar usando compressores de executável, como ASPack ou UPX da vida! Quando muito, vc pode usar essa mágica no instalador da sua aplicação, mas na própria aplicação principal, nem precisa se dar ao trabalho, pq já vai estar muito pequeno! 1) Todos os BPLs referentes aos componentes padrão do Delphi, assim como de componentes de terceiros que venha a usar (JediVCL, DevExpress, InfoPower, etc.), eu coloco tudo no System32! 2) O executável principal da aplicação fica na sua pasta na qual ele foi copiado/instalado! 3) Todos os BPLs que correspondem aos módulos(por assim dizer) da aplicação, além de serem definidos como packages apenas de runtime, ficam em uma pasta um nível abaixo do nível do executável principal, e nessa pasta o executável principal busca e efetua a carga dos mesmos. Nada impede que vc coloque os BPLs da sua aplicação na System32, visto que uma BPL, em essência, também é uma DLL, e como tal segue a mesma ordem de busca que uma DLL estática comum segue na hora de efetuar a sua carga. No meu caso, isso se aplica a quase todas as BPLs da minha aplicação, exceto por uma BPL que eu crio para gerenciar a carga dos pacotes (Chega! já falei até demais!). Mas, como eu disse, isto não é um padrão, e sim a minha maneira de trabalhar com pacotes! Cada um DEVE criar o seu próprio meio de gerenciamento dos módulos de sua aplicação. Sds. ________________________________ To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Thu, 17 Apr 2008 15:40:27 -0300 Subject: Re: [delphi-br] Formulários em BPL's Entaum Rubem fiz o teste e da para um exe que naum eh modularizado carregar uma BPL sem problema, mas se tiver muita BPL e vc não modulariza a sua aplicação fica estranho pois vai ter um monte de bpl do delphi e mais o seu EXE q ta gigante... rs Rubem o que vc's fazem com a bpls de vc's?? deixa na system32 do windows ou deixa jundo do EXE principal??? Em 17/04/08, Jhosef Marks <[EMAIL PROTECTED]> escreveu: > > Vlw Rubem mais uma vez... obrigado mesmo... > > Em 17/04/08, Rubem Nascimento da Rocha <[EMAIL PROTECTED]> > escreveu: >> >> >> Sobre a 1ª pergunta, não tenho certeza, pq até o momento ainda não me >> deparei com essa situação de, por exemplo, compartilhar um pacote. Minha >> experiência com desenvolvimento em equipe envolvendo packages consistia em >> cada desenvolvedor ter o seu projeto individual (gerando um .EXE normal) e >> depois a funcionalidade em questão era enviada a um desenvolvedor que se >> encarregava de gerar os pacotes do build release. Eu sugiro que seu amigo >> faça um teste, pois realmente eu não tenho certeza. >> >> Sobre a 2ª pergunta (que na verdade, foram duas!), a resposta para todas >> as perguntas é sim! >> >> Sds. >> >> ________________________________ >>> To: delphi-br@yahoogrupos.com.br >>> From: [EMAIL PROTECTED] >>> Date: Thu, 17 Apr 2008 12:39:08 -0300 >>> Subject: Re: [delphi-br] Formulários em BPL's >>> >>> >>> Rubem, muito obrigado mesmo... cheguei a dar uma olhada no Help do >> Delphi >>> mas naum tinha achado essa parte ai, vlw mesmo... ajudou muito... >>> Agora soh mais 2 perguntas referente as BPL's. >>> >>> 1ª - Digamos que eu tenha um BPL com todas funções genericas para uso >>> coletivo, o meu EXE é obrigado a ser complicado com a opção "Build >> with >>> runtime packages"? Ex.: tenho um amigo e passo apenas o arquivo >> funcoes.bpl >>> para ele... o EXE desse amigo eh obrigado a ter a opção "Build with >> runtime >>> packages" marcada para poder carregar meu Package?? >>> >>> 2ª - Estou carregando as funções da minha bpl assim... >>> >>> type >>> TSoma = function(const A, B: Integer): Integer; >>> >>> procedure TForm1.Button2Click(Sender: TObject); >>> var >>> Soma: TSoma; >>> Pacote: THandle; //Pode ateh ser global e usada em todos os lugares >>> begin >>> Pacote := LoadLibrary('funcoes.bpl'); >>> if Pacote <> 0 then >>> try >>> @Soma := GetProcAddress(Pacote, 'Soma'); >>> if @Soma <> nil then >>> begin >>> ShowMessage('Soma: ' + IntToStr(Soma(5, 3))); >>> end; >>> FreeLibrary(Pacote); >>> >>> except >>> ShowMessage('Pacote não Encontrado'); >>> end; >>> end; >>> >>> Seguindo o que vc disse eu poderia colocar o Pacote := >>> LoadLibrary('funcoes.bpl'); no inicio da minha aplicação e a chamadas >> das >>> funções na hora em q fosse usar.. correto?? Eu tenho que declarar um >> type >>> para cada função que eu for usar como se fosse uma DLL?? >>> >>> Obrigado, >>> >>> Em 17/04/08, Rubem Nascimento da Rocha <[EMAIL PROTECTED]> >> escreveu: >>>> >>>> Complementando minha resposta, para vc saber quais pacotes foram >>> carregados enquanto vc está depurando(ou como queiram, 'debugando') >> sua >>> aplicação, vá até o IDE do Delphi e digite Ctrl+Alt+M. Será mostrada >> uma >>> janela com a lista de todos os módulos que estão sendo usados pelo >>> aplicativo, incluindo DLLs do Windows e os pacotes. >>>> >>>> Sabendo quais são as classes de formulários que existem no pacote em >>> tempo de execução (pois em tempo de projeto/depuração/etc. não tem >> como!), >>> vc pode verificar se existem instâncias dos mesmos já criadas através >> da >>> função FindClassHInstance(). Pesquise na Internet a utilização dessa >> função. >>>> >>>> Boa sorte. >>>> Sds. >>>> >>>> ________________________________ >>>> >>>> To: delphi-br@yahoogrupos.com.br >>>> From: [EMAIL PROTECTED] >>>> Date: Thu, 17 Apr 2008 14:45:23 +0000 >>>> Subject: RE: [delphi-br] Formulários em BPL's >>>> >>>> Segundo o próprio help do Delphi, a função LoadPackage() carrega o >> pacote >>> checando duplicidades de units e executa os blocos 'initialization' de >> todas >>> as untis contidas no pacote. Somente isso! À medida que vc precisar >> carregar >>> formulários ou instanciar objetos de classes contidas no package, isso >> será >>> feito por vc, conforme a demanda da sua aplicação. Ou seja, vc usará o >> que >>> precisar na hora que vc quiser, criando, mostrando e liberando os >>> formulários do pacote. >>>> >>>> Sds. >>>> >>>> ________________________________ >>>> >>>> To: delphi-br@yahoogrupos.com.br >>>> From: [EMAIL PROTECTED] >>>> Date: Thu, 17 Apr 2008 09:25:42 -0300 >>>> Subject: [delphi-br] Formulários em BPL's >>>> >>>> Bom dia pessoal, to desenvolvendo uma aplicação e estou querendo >>> dividi-lá >>>> em BPL's, irei colocar cada módulo do sistema (Cadastro, Financeiro, >>> etc...) >>>> em uma BPL diferente, mas como cada módulo pode ter N formulário e >> (ou) N >>>> units gostaria de saber se quando eu carregar a BPL do módulo de >> cadastro >>>> que tem os formulários frmCadastroCliente e frmCadastroProduto que >> são >>>> formulários que são criados em tempo de execução (frmCadastroCliente >> := >>>> TfrmCadastroCliente.Create(nil)) toda a BPL será carregada ou apenas >> o >>> que >>>> eu for realmente usando durante a execução?? >>>> >>>> Como eu posso verificar qual o pacote e o que foi carregado dele na >> hora >>> do >>>> desenvolvimento e dos teste?? >>>> >>>> Vlw pessoal e bom dia a todos... >>>> >>>> -- >>>> Jhosef Marks de Carvalho >>>> Delphi Developer >>>> http://groups.google.com/group/soumaisdelphi >>> >>> Jhosef Marks de Carvalho >>> Delphi Developer >>> http://groups.google.com/group/soumaisdelphi >>> >>> [As partes desta mensagem que não continham texto foram removidas] >>> >>> >>> >> >> __________________________________________________________ >> Confira vídeos com notícias do NY Times, gols direto do Lance, >> videocassetadas e muito mais no MSN Video! >> http://video.msn.com/?mkt=pt-br >> >> > > > > -- > Jhosef Marks de Carvalho > Delphi Developer > http://groups.google.com/group/soumaisdelphi -- Jhosef Marks de Carvalho Delphi Developer http://groups.google.com/group/soumaisdelphi [As partes desta mensagem que não continham texto foram removidas] _________________________________________________________________ Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS! http://www.msn.com.br/emoticonpack