



Neste artigo, será feito alguns exemplos de uso dos componentes TDdeClient e TDdeServer.
A tecnologia DDE significa Dynamic Data Exchange (Inglês intercâmbio dinâmico de dados),
ou seja, a troca de dados entre processos.
DDE permite que duas aplicações em execução para compartilhar um conjunto de dados.
Isso não pode acontecer normalmente devido à virtualização do espaço de armazenamento,
de modo que cada processo pode ler e gravar dados em sua memória virtual, mas nunca
sobre a de outro processo.
O problema é que muitas aplicações têm a necessidade de se comunicar entre si sem a
utilização de ficheiros externos, e com isso surgiu o DDE.
Um exemplo de intercâmbio dinâmico de dados é entre os dados de uma planilha em um
documento criado com um processador de texto, caso a mudança de dados em um
aplicativo é transmitido diretamente para o outro.
A tecnologia DDE representou o início deste modo de conceber o
intercâmbio de dados, já que agora as suas características têm sido largamente
suplantado pelo OLE. No entanto DDE ainda é usado em algumas áreas devido à sua
simplicidade. Tal é o mecanismo usado pelo Windows Explorer para comunicar um
aplicativo já aberto para abrir um novo arquivo (caso contrário, o novo arquivo iria
abrir em uma nova instância do aplicativo).
Interessante é a sua facilidade de uso, porque os componentes que são encontrados na
‘IDE do Delphi, apesar de pouco material sobre o assunto, são muito simples de usar.
A seguir, será visto um exemplo:
É necessário criar duas aplicações:
Uma deve ser o cliente e a outra servidor e tudo o que é digitado no servidor deve
estar no cliente e vice-versa.
Ambas as aplicações serão aplicação VCL e será adicionado
TDdClientConv e TDdeClientItem para o cliente e TDdServerConv e TDdeServerItem para
o servidor.
O memo deve ser conectado ao respectivo Conv componente.
A comunicação do servidor para o cliente usará o campo de texto, que vai ser ligada ao
memo do cliente, de modo que qualquer modificação na primeiro repercute sobre a segundo.
A comunicação do cliente para o servidor, em vez fazer a ocorrer utilizando a função do
cliente ExecuteMacro, enviando assim como parâmetro os dados que eu quero transmitir
para o servidor.
O servidor é relativamente simples, já que vamos criar um manipulador para o evento
OnExecuteMacro e enviar dados, alterando a ServerItem.
1 2 3 4 | procedure TForm1.DdeServerConv1ExecuteMacro(Sender: TObject; Msg: TStrings); begin Memo1.Lines:=Msg; end; |
1 2 3 4 | procedure TForm1.Edit2Change(Sender: TObject); begin DdeServerItem1.Text:=Edit2.Text; end; |
No cliente, no entanto, o processo é um pouco mais complicadas, porque temos de
definir todos os dados para se conectar ao servidor e o link para o item. Por uma
questão de clareza, foi optado por separá-los.
1 2 3 | ConnectMode := ddeManual; SetLink('server', 'ddeserverconv1'); OpenLink; |
A configuração da conexão com o servidor tem dois parâmetros, o primeiro é o nome
do servidor de aplicativos sem a extensão “.exe” , por isso, uma vez que no nosso
caso, a aplicação é chamada de “server.exe” deve-se informar apenas “server “.
O segundo parâmetro contém o nome do componente TDdeServerConv usado no servidor,
que neste exemplo é DdeServerConv1.
Se os dois aplicativos estiverem em pastas diferentes, será necessário definir o
ServiceApplication com o caminho completo sem a extensão
(exemplo: “D: \ test \ server”).
1 | DdeClientItem1.DdeItem := 'DdeServerItem1'; |
Nesta forma, os dois itens serão interligados e, em seguida, quando as ocorrer
mudanças do texto no servidor, elas serão encaminhadas para o cliente, que
poderá visualizá-las.
1 2 3 4 5 | procedure TForm1.DdeClientItem1Change(Sender: TObject); begin // When the client item will be changed then update memo memo1.Lines[1] := DdeClientItem1.Text; end; |
Finalmente, deve-se de enviar o texto a partir do cliente para o servidor com a
função ExecuteMacro:
1 | DdeClientConv1.ExecuteMacroLines(list,false); |
O resultado será que tudo o que está escrito no cliente, após a conexão com
DDESERVER, será exibido no servidor e o que está escrito para o servidor será
exibido no cliente.
Caso haver mais clientes conectados ao mesmo servidor, o que vai acontecer é
que eles vão receber os mesmos dados ao mesmo tempo a partir do servidor e cada
cliente irá transmitir normalmente seus dados para o servidor.
Abaixo está disponível dois projetos, o Cliente e Servidr utilizando a
tecnologia DDE para se comunicar uns com os outros. Projeto compilado no
Delphi XE 7.
Espero que este arquivo já útil e esteja a vontade para enviar a sua sugestão.
Você precisa fazer o login para publicar um comentário.
oi, problema 404 (não encontrado) no link dos arquivos dos projetos
Olá, pedimos desculpas pelo transtorno e aproveitamos para informar que o link para download está no ar novamente.
Lembrando que para efetuar o download você deve estar logado no site.
Link nao funciona
Link quebrado