Quais ferramentas existem para converter um aplicativo Delphi 7 para C# e o framework .Net?[fechado]

StackOverflow https://stackoverflow.com/questions/59547

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu mantenho um aplicativo antigo somente para PC escrito em Delphi 7.Embora o Delphi tenha me servido muito bem no passado, agora só o uso para esta aplicação e percebo que minhas habilidades com a linguagem estão diminuindo.Sua sintaxe é muito diferente das linguagens de 'trabalho diário' de Java/Ruby, por isso levo mais tempo para entrar no ritmo de escrever novo código, além de ser tão antigo que não usei muitos interfaceÉ então que o código não é gerenciado, o que me parece antigo agora!

Muitos dos meus usuários estão migrando para o Vista, que pode executar o aplicativo em modo de compatibilidade ou pode ter problemas de GPF dependendo de como o PC está configurado pelo departamento de TI, então tenho que fazer alguma manutenção no aplicativo.Estou me perguntando se deveria pular para uma pilha mais familiar.

Existe uma ferramenta automatizada que fará o trabalho braçal de conversão da base de código para C#, deixando-me concentrar na conversão de quaisquer componentes não padrão?Estou usando um componente de banco de dados incorporado chamado Banco de dados absoluto que é compatível com BDE e usa SQL padrão, e um componente de navegador HTML nativo do Delphi que pode ser trocado por algo do mundo da Microsoft.

Quão boas são essas ferramentas de conversão?

Foi útil?

Solução

Não conheço nenhuma ferramenta automatizada para fazer essa conversão.Pessoalmente, eu sugiro que você continue com o Delphi, talvez apenas atualize para uma nova versão.Eu vi alguns DOMs de código que tentam converter de Delphi para C#, mas isso não resolve o problema da biblioteca.

CodeGear (formalmente Borland) possui uma ferramenta para indo de C# para Delphi isso funciona bem.Eu diria que as ferramentas que vão na outra direção funcionarão da mesma forma (exigindo muita edição).Aqui está uma ferramenta sueca que funciona com o mesmo princípio CodeDOM para ir de Delphi para C# (e vários outros idiomas).Existem outros, simplesmente não consigo encontrá-los agora.

Outra opção seria atualizar para uma versão mais reenviada do Delphi para .NET e portar seu código para .NET dessa forma.Depois de fazê-lo funcionar no Delphi for .NET (o que será bem fácil, exceto para o banco de dados incorporado, a menos que eles tenham uma versão .NET), você poderá usar Refletor .NET e Desmontador de arquivos reverter o IL para C#.Você ainda usará a VCL, mas poderá usar C# em vez de Object Pascal.

Outra solução semelhante seria portá-lo para Oxigênio por RemObjects.Acredito que eles tenham um caminho de migração do Delphi Win32 para o WinForms.Então use Refletor .NET e Desmontador de arquivos reverter o IL para C#.

Em suma, não há respostas fáceis.A migração de idiomas é mais fácil do que a migração de bibliotecas.Muito disso depende de quais componentes de terceiros você usou (além do AbsoluteDatabase) e se você fez alguma chamada de API do Windows diretamente em seu aplicativo.

Outra opção completamente diferente seria procurar uma equipe off shore para manter a aplicação.Eles provavelmente podem fazer isso de forma barata.Você poderia encontrar alguém no mercado interno, mas isso lhe custaria mais, sem dúvida (embora com a queda do dólar e o fraco mercado de trabalho, você nunca sabe...)

Boa sorte!

Outras dicas

Houve um relatório científico de uma transformação bem-sucedida de um projeto Delphi de 1,5 milhão de linhas para C# por John Brant.Ele escreveu um analisador Delphi, um gerador C# e muitas regras de transformação no AST.Estender gradualmente o conjunto de regras, fazer uma compilação diária, muitos testes unitários e algumas reescritas de partes difíceis do Delphi permitiu-lhe com uma equipe de 4 pessoas, entre as quais alguns dos desenvolvedores originais, com profundo conhecimento em Delphi e C#, migrar o software em 18 meses.John Brant sendo o desenvolvedor original do navegador de refatoração e do kit de construção do compilador SmaCC, é improvável que você consiga ir tão rápido

Muitos dos meus usuários estão se mudando para o Vista que pode executar o aplicativo em compatibilidade ou pode ter problemas de GPF dependendo de como seu PC é configurado pelo seu departamento de TI, portanto, Eu tenho que fazer algumas manutenções no aplicação.Eu estou me perguntando se eu deveria Pule para uma pilha mais familiar.

A menos que você esteja fazendo algo fora do padrão, os aplicativos D7 devem funcionar bem no Vista.

Quanto à conversão para C#, acho que a maioria das ferramentas de conversão seria uma perda de tempo.Uma abordagem melhor pode ser reescrever o aplicativo do zero.

Não há uma resposta fácil, mas tenha em mente que a variante da linguagem Delphi.net tem como alvo o tempo de execução .net e que diferentes linguagens em .net podem interoperar estreitamente.

Você pode tentar compilá-lo no Delphi.Net, fatorando em diferentes assemblies e depois convertendo-os manualmente, um por um.O Reflector pode ajudar na engenharia reversa do código compilado em um esqueleto de código C # - equivalente, mas sem comentários, nomes de variáveis ​​​​internas, etc.

Por outro lado, Delphi.net pode ser bom o suficiente (TM) para este projeto.

Mas, a menos que você tenha um bom conjunto de testes (suponho que provavelmente não, dado o estado da arte do Delphi 7), você introduzirá bugs.

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