30 de junho de 2009

Delphi 2009 - Parte II

Hoje passei o dia tentando migrar minhas aplicações para Delphi 2009. Com muito suor consegui converter os componentes como disse anteriormente, mas tive que criar alguns para substituir (por sorte) 2 componentes da RXLib que não compila no D2009 nem a pau.

Ai, fui tentar é claro, compilar minhas aplicações e já me deparei com um problema. Utilizo aplicações em 3 camadas e ai para minha surpresa o método GetTableName do DataSetProvider sofreu mudanças nos parâmetros, ao invés de String ele utilizar WideString.... fala sério, tive que trocar tudo... até compila, mas dá pau depois.

Beleza a aplicação servidora funcionou!


Fui para a aplicação cliente, depois de, é claro, sofrer trocando os componentes da RxLib pelos meus novos componentes, consegui finalmente compilar a versão. Aproveitei e também atualizei meu Socket Connection para a nova versão do Delphi 2009.... ai começou a primeira decepção. O novo Socket simplesmente não funciona, a aplicação não localiza nenhum servidor de aplicação e não consegui conectar à minha aplicação servidora.... como descobri? Troquei o socket, voltando para a versão do Delphi 2007 e adivinha... funcionou.


Os problemas não pararam por ai, meu componente de relatórios não funcionava mais... eu entrava para editar o relatório, e.... pau.... Access Violation (se fosse em tempo de design, fechava o Delphi).

Bom, deixei o componente de relatório de lado e depois que consegui compilar e executar minha aplicação, comecei a testar. Primeira tela, 100% de sucesso... funcionou. Segunda tela... pau! Sem explicação... essa tela funcionava certinho pensei.... mas para minha frustração a tela estava codificada corretamente, o problema estava novamente no Delphi 2009. Não sei exatamente porque, mas parece que o Delphi mudou a implementação da propriedade "Provider Flags" do TSQLQuery. Antes, quando eu queria apenas trazer um campo na consulta e manusear o dado deste campo (alterar o valor dele) e não quisesse gravá-lo (sem inserção ou alteração), bastava eu deixar todas as propriedades como FALSE e assim, ao inserir ou alterar, o campo não sofria alterações. Muito útil quando se tem campo FK em uma tabela e o valor precisa ser mostrado. Acontece, que desta forma, no Delphi 2009 não funciona, o DELPHI simplesmente tenta gravar o campo, e como ele não existe na tabela sendo gravada.... pau.

Putz, o que que a Embarcadeiro e a equipe da Codegear fizeram com o Delphi? Inventaram um monte de coisa nova e estragaram o que funcionava bem antes......


Bom, qual minha saída? Voltar para o bom e velho Delphi 7. Acho que é por isso que a maioria esmagadora ainda utiliza essa versão do Delphi....


Bom, até a próxima.

2 comentários:

  1. Pura verdade.
    Delphi 2009 é só visual, não é funcional como Delphi 7.

    ResponderExcluir
  2. Cara, comecei a migrar minhas aplicação para o Delphi 2009 e gostei. Atualizei todos os compenentes e rodou tudo blz

    ResponderExcluir