Adicionar unit ao projeto em Run Time

16/05/2008

3

Olá,
Como faço para adicionar uma unit, a partir de um endereço armazenado num edit em run time e como pegar o nome do Form desta unit?

Att
Dalton


Responder

Posts

17/05/2008

Dbergkamps10

upando...


Responder

18/05/2008

Dbergkamps10

up


Responder

19/05/2008

Dbergkamps10

sobe


Responder

22/05/2008

Dbergkamps10

alguém se habilita?


Responder

23/05/2008

Dbergkamps10

Caramba, já procurei em todo buraco e nao achei. Aqui o post ta com quase uma semana e não temos nem ideia de como se faz isso... :lol: :lol: :lol:
Será que é impossível????
Se puderem indicar algum material ficarei grato.

Obrigado.

Att
Dalton


Responder
acho que isso não é possível.

você pode utilizar um interpretador de scripts pra algo bem específico, mas creio não ser possível fazer exatamente como você quer, pois seria necessário compilar a unit...


Responder

24/05/2008

Dbergkamps10

Olá,
Prezado Emerson,
Obrigado pela força. Eu só quero adicionar a unit a um projeto especifico, mas nao quero compilar. vai ser assim: escolho o .dpr e depois escolho a unit a ser adicionado a este dpr, mas nao vou compilar.

Se puder dar mais uma forcinha agradeço.

Att
Dalton


Responder

28/05/2008

Brunodsr

Nao ha como adicionar units a um projeto em runtime, exceto se vc o fizer por DLLs. Cria chamadas para DLLs em runtime. Mas é só a chamada ok? Cada DLL será um módulo. Aconselho a gravar o nome dos forms que vc quer em um arquivo INI.

//Procedure para carregar modulos em runtime
procedure TFormPrincipal.CarregaFormDe(const NomeDaDLL: String);
type
  TMetodoDeNotificacao = procedure of object;
  TFuncaoDeForm = function(Owner: TComponent; MetodoDeNotificacao: TMetodoDeNotificacao): TForm;
var
  CriaForm: TFuncaoDeForm;
begin
  LiberaForm;
  FIdentificador := LoadLibrary(PChar(NomeDaDLL));
  if FIdentificador = 0 then
  begin
    ExibeErro(´Não foi possível carregar o arquivo "´ + NomeDaDLL + ´"!´);
    Exit;
  end; // if
  try
    @CriaForm := GetProcAddress(FIdentificador, ´CriaForm´);
    if @CriaForm = nil then
    begin
      ExibeErro(´Não foi possível encontrar a função "CriaForm" no arquivo "´ +
                NomeDaDLL + ´"!´);
      Abort;
    end; // if
    FForm := CriaForm(Application, AcionaTimerDeLiberacao);
    FForm.ShowModal;
  except
    FreeLibrary(FIdentificador);
    FIdentificador := 0;
  end; // try-except
end;

//Usando a procedure
procedure TFormPrincipal.ButtonExibirClick(Sender: TObject);
begin
  ExibeInformacao(´Carregando o módulo, criando o form e exibindo-o...´);
  CarregaFormDe(´ModuloTeste.dll´);
  ExibeInformacao(´Tudo ok.´);
end;


Espero ter ajudado. Caso sinta dúvidas, me da um toque e eu te passo os fontes com um exemplo ok?


Responder
Olá, Prezado Emerson, Obrigado pela força. Eu só quero adicionar a unit a um projeto especifico, mas nao quero compilar. vai ser assim: escolho o .dpr e depois escolho a unit a ser adicionado a este dpr, mas nao vou compilar. Se puder dar mais uma forcinha agradeço. Att Dalton

o que você quer é manipular o ´texto´ do dpr? incluir os units como se fosse o Delphi incluindo, editando o arquivo dpr?


Responder

28/05/2008

Dbergkamps10

Olá
Exatamente isso amigo emerson. Como faço pra conseguir isso?
Att
Dalton


Responder

31/05/2008

Dbergkamps10

upando...


Responder

31/05/2008

Mazzi

... Olha meu caro... se tu apenas editar o ´texto´-codigo do .DPR... nao vai adiantar muito se o mesmo nao for compilado, pra vc ter o efeito desejado.


Responder

31/05/2008

Dbergkamps10

Olá,
Mazzi obrigado pela força.
O q eu quer fazer eh o seguinte: tenho um exe rodando. Nele, tenho a opção de escolher um arquivo dpr. Tambem tenho a opção de adicionar os arquivos *.pas que faram parte desse dpr. O que eu quero eh codigo pra adicionar o *.pas ao dpr em run time.

Att
Dalton


Responder

02/06/2008

Dbergkamps10

Upando...


Responder

04/06/2008

Dbergkamps10

Up.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira