DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Montando um Servidor e Cliente DDE em Delphi.

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.

Download Baixar DDE cliente-servidor

Facebook Comments Box
  • InfusTec
  • 7.003 views
  • 4 comentários
  • 14 de março de 2015

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

4 respostas para “Montando um Servidor e Cliente DDE em Delphi.”

  1. MilkoSoft disse:

    oi, problema 404 (não encontrado) no link dos arquivos dos projetos

  2. John Kennedy disse:

    Link nao funciona

  3. Jorge Rezalla disse:

    Link quebrado

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados