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

Responder a