Estou estudando a estrutura WCF por conta própria, e até alguns dias atrás estava tudo funcionando conforme o planejado, no entanto, apareceu um problema que está há dez dias tirando meu sono e já não sei mais onde pesquisar.
Primeiramente, explicarei o projeto para que seja mais fácil o entendimento por parte dos colegas.
Inicialmente, criei um projeto WCF, com o cliente e o servidor desenvolvidos em C#, e tudo funcionou perfeitamente.
O cliente é uma console application, onde o usuário informa o número de registros que deseja retornar, passa essa informação como argumento chamando o método do serviço, que por sua vez consulta o banco de dados retornando um Array de produtos. Os produtos por sua vez, tem os campos Código, Descição e Valor.
Neste caso, consigo acessar normalmente as informações de cada objeto no cliente.
Para testar a integração com o Delphi, exportei a biblioteca DLL do cliente para um arquivo TLB (Type Library) usando a ferramenta "regasm" no prompt de comando do Visual Studio. No Delphi, importei essa TLB. Então criei um cliente no Delphi, onde o usuário também escolhe o número de registros a retornar, e aparentemente o cliente Delphi recebe os registros com sucesso.
No entanto, o método do serviço .NET retorna um array de Produtos, e no Delphi o tipo de retorno desse método aparece como "pSafeArray".
Aqui surge o problema. Como posso converter, transformar etc. esse "pSafeArray" em um array de produtos novamente? Ou, se não for possível converter, como posso acessar a informação de cada produto?
Lembrando que importei também no Delphi uma Type Library da classe "Produtos", ou seja, até consigo criar variáveis "Produto" no Delphi, no entanto não faço idéia de como fazer os dados do "pSafeArray" virarem produtos.
Me desculpem se houver algum erro crasso quanto aos termos aqui utilizados. É que não manjo muita coisa de Delphi mas gostaria muito de fazer esse projeto funcionar.
Question
Germanno
Boa noite,
Estou estudando a estrutura WCF por conta própria, e até alguns dias atrás estava tudo funcionando conforme o planejado, no entanto, apareceu um problema que está há dez dias tirando meu sono e já não sei mais onde pesquisar.
Primeiramente, explicarei o projeto para que seja mais fácil o entendimento por parte dos colegas.
Inicialmente, criei um projeto WCF, com o cliente e o servidor desenvolvidos em C#, e tudo funcionou perfeitamente.
O cliente é uma console application, onde o usuário informa o número de registros que deseja retornar, passa essa informação como argumento chamando o método do serviço, que por sua vez consulta o banco de dados retornando um Array de produtos. Os produtos por sua vez, tem os campos Código, Descição e Valor.
Neste caso, consigo acessar normalmente as informações de cada objeto no cliente.
Para testar a integração com o Delphi, exportei a biblioteca DLL do cliente para um arquivo TLB (Type Library) usando a ferramenta "regasm" no prompt de comando do Visual Studio. No Delphi, importei essa TLB. Então criei um cliente no Delphi, onde o usuário também escolhe o número de registros a retornar, e aparentemente o cliente Delphi recebe os registros com sucesso.
No entanto, o método do serviço .NET retorna um array de Produtos, e no Delphi o tipo de retorno desse método aparece como "pSafeArray".
Aqui surge o problema. Como posso converter, transformar etc. esse "pSafeArray" em um array de produtos novamente? Ou, se não for possível converter, como posso acessar a informação de cada produto?
Lembrando que importei também no Delphi uma Type Library da classe "Produtos", ou seja, até consigo criar variáveis "Produto" no Delphi, no entanto não faço idéia de como fazer os dados do "pSafeArray" virarem produtos.
Me desculpem se houver algum erro crasso quanto aos termos aqui utilizados. É que não manjo muita coisa de Delphi mas gostaria muito de fazer esse projeto funcionar.
Agradeço desde já
Att.
Germanno Domingues
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.