Friday, July 17, 2009

DataSnap Patch

Lendo o forum da Codegear encontrei um post com uma interessante listagem de patches para o DataSnap do Delphi versões 5, 6 e 7. Uma consulta aos patches mostra que vários deles são bem úteis e contornam erros relativamente comuns:

Unit Provider.pas:

1802
2338
2638
2792
4006
4014

Unit DBClient.pas:

430
1266
1381
1471
1520
1982
2333
4301
5707

Alguns destes patches, senão todos, foram publicados há bastante tempo pelo papa do DataSnap, Dan Miser no site www.distribucon.com. Infelizmente o código fonte dos bug fixes do DataSnap neste site não estão mais acessíveis devido a um erro no site (eventualmente consegue-se uma cópia dos fontes destes patches no cache do google).

Utilizando o WinMerge criei dois patches (arquivos diff) que podem ser utilizados com a ferramenta Patch for Windows. Aplicados aos arquivos Provider.pas e DBClient.pas originais da versão específica do Delphi, gerarão os arquivos fontes modificados em sua versão final, contendo todos os patches.
Atenção: Não utilize o arquivo patch em fontes originais de outra versão que não a especificada.

Provider_patch_D602.txt (Delphi 6.02)
DBClient_patch_D602.txt (Delphi 6.02)

Provider_patch_D71.txt (Delphi 7.1)
DBClient_patch_D71.txt (Delphi 7.1)

Um outro patch para o Provider.pas, contendo todos estes patches e ainda as alterações de um outro post meu sobre modificações no TDataSetProvider pode ser baixado aqui:

Provider_patch_enh_D602.txt
(Delphi 6.02 - Bug fixes + enhancements)
Provider_patch_enh_D71.txt
(Delphi 7.1 - Bug fixes + enhancements)

O download do executável patch.exe (zipado) pode ser obtido diretamente aqui.

Para quem nunca usou o patch.exe, a linha de comando para transformar o seu fonte original, digamos Provider.pas, no arquivo modificado será:

patch.exe -p1 -b Provider.pas < Provider_patch_D602.txt

Observação: Todos os update packs do Delphi 6 e 7 foram aplicados antes da geração do arquivo de Patch (Delphi 6 Update pack 1 e 2, Delphi 7 Update Pack 1). Logo, estes updates devem ser aplicados ANTES do patch.

No comments: