Compartilhar uma conexao entre dois programas exe diferentes
21/01/2010
0
Temos um grande sistema todo desenvolvido como BPL's, agora vamos desenvolver um novo módulo no método tradicional Delphi EXE.
O sistema principal parte de um EXE que conecta e chama dinamicamente as BPLs e monta o menu do sistema.
Neste menu terá uma chamada ao EXE do novo módulo. Gostaríamos de passar para o EXE a conexão (um componente Zconnection).
Tentamos passar através do endereço de memória e string na chamada do EXE, mas não consigo atribuir um endereço de memória ao objeto Zconnection do segundo EXE. Tentei com ponteiros mas acho que está operação não existe né?
EXE_BPL --> conecta Zconnection
EXE_BPL --> chama EXE_NOVO passando endereço de memória do Zconnection como parametro string
EXE_NOVO --> Zconnection <-- endereço de memoria passado *** :( aqui nao consegui.
Desde já agradeco.
Júlia Correia
Posts
20/05/2010
Fernando Vicari
20/05/2010
Emerson Lara
20/05/2010
Fernando Vicari
procedure TPrograma1.Button1Click(Sender: TObject); var iteste: integer; begin // pega o endereço da memória iteste := Integer(Conexao); // chama o outro programa passando o endereço. WinExec(PChar('D:\C_Fontes\ADM\Projeto\programa2.exe ' + IntToStr(iteste)),SW_SHOWNORMAL) end;
No segundo programa vc deve ler o endereço e atribuir ao componente de conexão, conforme abaixo:
procedure TPrograma2.FormCreate(Sender: TObject); begin // Cria o componente em tempo de execução Conexao := TOracleSession.Create(Self); // Se não vir o parametro eu conecto novamente if Trim(ParamStr(1)) = '' then begin Conexao.LogonDatabase := 'BASE'; Conexao.LogonUsername := 'USUARIO'; Conexao.LogonPassword := 'Senha'; Conexao.Connected := True; end else begin // Se vier o parametro eu utilizo a mesma conexão ShowMessage(ParamStr(1)); Conexao := TOracleSession(StrToInt(ParamStr(1))); if Conexao.Connected then ShowMessage('Conectado') else ShowMessage('Não Conectado'); end; end;
20/05/2010
Fernando Vicari
Clique aqui para fazer login e interagir na Comunidade :)