Pergunta

Eu tenho um projeto bastante grande (freeware) escrito com Delphi 2007 que está usando tanto o TntUnicodeControls ea biblioteca TntLXControls e eu estou planejando se mudar para Delphi 2009.

Infelizmente eu estou usando essas bibliotecas em todos os lugares no meu projeto:

  • substituição para controles VCL para fornecer capacidade de Unicode
  • Win32 wrappers de API (principalmente para comparar cordas)
  • Os aprimoramentos de recursos de TntLXForms, TntLXRegistry, ...
  • componentes
  • terceira que usam TntControls. (VirtualTrees, SpTBXLib, atualizações para D2009 estão disponíveis)

Você tem alguma experiência e / ou sugestões em portar um projeto como este para Delphi 2009. É aconselhável primeiro interruptor para os controles Unicode (comercial) TMS?

Foi útil?

Solução

Eu posso ajudar com alguns dos isso, como eu sou portando uma aplicação C ++ Builder que usa TNT de 2007 a 2009. A mudança para Unicode no D2009 está atrasado e bem-vindo. No entanto, é lamentável que a transição é provavelmente mais fácil para aqueles que não precisava unicode no passado, e provavelmente ainda não. Se, como eu, você precisava de Unicode e usado grande controle da TNT Troy Wolbrink para fornecê-la, você tem um trabalho bem mais complexo ...

A boa notícia é que há uma nova versão do TNTControls de TMS Software que suportes D2009. Eu não olhei para isso, mas espera que ele é apenas uma 'fachada' camada sobre os componentes VCL nativos à portabilidade facilidade. Eu considero que, se sua bibliotecas pode ser reconstruído para usá-lo.

No entanto, você pode ser melhor voltar para controles VCL nativos, ea razão é tipos de cordas. controle TNT sempre usaram WideString passar Unicode cordas e para trás, e você pode muito bem ter WideString uso espalhadas através de seu próprio código. Este trabalho, mas não é ideal como WideString realmente deve apenas ser utilizado para interoperabilidade COM como ele 'wraps' do tipo COM BSTR. strings unicode nativas em D2009 são contados referência e deve ser significativamente mais rápido.

Se você decidir substituir componentes TNT com os VCL nativos, você pode usar GExperts "substituir componentes" comando - ou, talvez mais fácil, fazer uma pesquisa e substituir em seus arquivos .DFM e .pas (que você tem em forma de texto, você não) para substituir TTNT com T.

Outras dicas

Instale GExperts; existe "Substituir componente" suplemento IDE que pode ajudar a converter TTntXXX aos controles TXXXX. Experimente por uma vez, e se é ok basta verificar "Substituir evrywhere no projeto".

SpTbx e VirtualTrees só pode ser recompilados - ambos apoio D2009.

Se você usou wrappers WinAPI apenas para chamar Unicode API-s eles devem trabalhar em D2009 também.

que te deixa com controles TntLX (TntLXForms, TntLXRegistry, ...). Uma vez que eles não são suportados, pode ser que é bom tempo para mudá-los de qualquer maneira.

Eu recomendo os seguintes recursos:

O Marco Cantu Delphi 2009 Handbook Capítulo 3 (Portando para unicode) http://www.marcocantu.com/dh2009/

Artigos de Nick Hodges (Delphi em um Mundo Unicode) http://blogs.codegear.com/nickhodges/2008/11/20/ 39149

Eu acho que de qualquer forma ele vai ser um monte de trabalho. Provavelmente mais do que se você não tivesse feito todo o trabalho para torná-lo compatível com Unicode antes. Pessoalmente, gostaria de esquecer os controles Unicode TMS, e voltar para a VCL. Ele vai salvar mais dor no futuro. (Nada contra esses controles, você mente.)

Lembre-se também, cadeia que de D2009, não é a mesma coisa que WideString do D2007 que você, sem dúvida, usado em seu aplicativo. Assim, todas as instâncias do WideString, que você tão diligentemente passou de string (que era AnsiString), necessidade de voltar novamente para string (que agora é UnicodeString).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top