É possível recompilar os pacotes do DataSnap no Delphi XE com uma versão nova / diferente do Indy?

9

Ok - temos um problema interessante.

Alguns antecedentes:

  1. Nosso aplicativo principal usa o Indy 10. No entanto, levamos o Indy 10 fonte e corrigir erros nele, recompilar e instalar o nosso próprio conjunto de Indy componentes.

  2. Estamos migrando para o Delphi XE e queremos começar a usar o DataSnap.

  3. O DataSnap requer a versão "oficial, grátis" da Indy, que é incompatível com a nossa versão personalizada do Indy.

  4. Nossos servidores DataSnap serão aplicativos separados, mas já que temos o nosso próprio Indy instalado no IDE, não podemos "cruzar os fluxos".

Ok, portanto, não podemos usar o DataSnap do Delphi XE fora do caixa por causa deste problema de compatibilidade.

Então, minhas perguntas são:

É possível recompilar os pacotes do DataSnap no Delphi XE com uma versão nova / diferente do Indy?

Seus pensamentos são aceitos com gratidão.

    
por Nick Hodges 27.06.2011 в 20:22
fonte

2 respostas

3

A crença comum é Não, isso não é possível devido a nem todas as fontes serem fornecidas pela Embarcadero e algumas dessas fontes dependem da construção da Indy como embarcada. (O que é extremamente frustrante para os usuários finais, pois a versão do Indy que acompanha o Delphi está desatualizada de maneira relativamente rápida e, às vezes, a versão selecionada no momento não é necessariamente muito boa.)

Veja a questão SO relacionada: É possível usar o Indy 10.5.8.0 no Delphi XE e no DataSnap?

Veja também a página do projeto Indy: link que afirma:

  

Nota: em D / CB / RAD 2009+, o DataSnap usa   Indy 10 internamente. Instalando um novo   versão do Indy renderizará o DataSnap   inutilizável, pois não será capaz de   carregue os pacotes Indy mais.   DataSnap é compilado contra o Indy   pacotes fornecidos com o IDE e   O DataSnap não pode ser recompilado até o final   Comercial. Se você precisar usar o DataSnap,   então você precisará manter o   pacotes originais da Indy 10 para uso em   Projetos DataSnap.

Já foi dito que a próxima versão deve permitir atualizações mais fáceis da Indy.

    
por Darian Miller 28.06.2011 / 01:03
fonte
2

Se toda a fonte do DataSnap estiver incluída, é claro que é possível usar algum tipo de programa de análise executável do PE para detectar quais classes e unidades são usadas no BPL (já que os BPLs são apenas DLLs customizadas). Um muito fácil de usar é fornecido com o GExperts.

Em BPLs, as linhas da lista de exportações da GExperts \ PE Information têm um formato como @xp $ @ [nn] [UnitName] @ [TypeName] (para tipos) e @ [ UnitName] {@ [Type >]} @ [Unidade unidade global como procedimentos ou variáveis] (para o resto).

Você pode salvar essa lista em um arquivo e GREP para obter uma lista de Unidades usadas em uma BPL.

Exemplos reais (vcl140.bpl):

  • @ $ xp $ 11Forms @ TForm
  • @ Appevnts @ TCustomApplicationEvents @ Ativar
  • @ Clipbrd @ Clipboard
por Fabricio Araujo 27.06.2011 / 22:26
fonte