Quali strumenti esistono per convertire un'applicazione Delphi 7 in C# e nel framework .Net?[Chiuso]

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

  •  09-06-2019
  •  | 
  •  

Domanda

Mantengo una vecchia applicazione solo per PC scritta in Delphi 7.Anche se Delphi mi è stato molto utile in passato, ora lo uso solo per questa applicazione e trovo che le mie capacità con la lingua stiano diminuendo.La sua sintassi è troppo diversa dai linguaggi del mio "lavoro quotidiano" Java/Ruby, quindi mi ci vuole più tempo per entrare nel ritmo della scrittura di un nuovo codice, inoltre è così vecchio che non ne ho usati molti interfacciaÈ così che il codice non è gestito, il che ormai mi sembra antico!

Molti dei miei utenti stanno passando a Vista che potrebbe eseguire l'app in modalità compatibilità o potrebbe avere problemi GPF a seconda di come il loro PC è configurato dal reparto IT, quindi devo fare un po' di manutenzione sull'applicazione.Mi chiedo se dovrei passare a uno stack più familiare.

Esiste uno strumento automatizzato che eseguirà il lavoro di conversione della base di codice in C#, lasciandomi concentrare sulla conversione su eventuali componenti non standard?Sto utilizzando un componente di database incorporato chiamato AbsoluteDatabase che è compatibile con BDE e utilizza SQL standard ovunque, e un componente browser HTML Delphi nativo che può essere sostituito con qualcosa del mondo Microsoft.

Quanto sono efficaci questi strumenti di conversione?

È stato utile?

Soluzione

Non sono a conoscenza di strumenti automatizzati per effettuare tale conversione.Personalmente suggerirei di restare con Delphi, magari semplicemente aggiornandolo a una nuova versione.Ho visto un paio di DOM di codice che tentano di convertire da Delphi a C#, ma ciò non risolve il problema della libreria.

CodeGear (formalmente Borland) ha uno strumento per passando da C# a Delphi funziona bene.Presumo che gli strumenti che vanno nella direzione opposta funzioneranno allo stesso modo (richiedendo molte modifiche).Ecco uno strumento svedese che funziona secondo lo stesso principio CodeDOM da cui partire Da Delphi a C# (e una serie di altre lingue).Ce ne sono altri, al momento non riesco a trovarli.

Un'altra opzione sarebbe quella di eseguire l'aggiornamento a una versione più recente di Delphi per .NET e trasferire il codice su .NET in questo modo.Una volta che funziona in Delphi per .NET (che sarà abbastanza semplice, ad eccezione del DB incorporato, a meno che non abbiano una versione .NET) puoi usare Riflettore .NET E Disassemblatore di file invertire l'IL in C#.Utilizzerai comunque la VCL, ma puoi utilizzare C# invece di Object pascal.

Un'altra soluzione simile sarebbe portarla su Ossigeno di RemObjects.Credo che abbiano un percorso di migrazione da Delphi Win32 a WinForms.Quindi utilizzare Riflettore .NET E Disassemblatore di file invertire l'IL in C#.

Insomma, non ci sono risposte facili.La migrazione della lingua è più semplice della migrazione della libreria.Molto dipende da quali componenti di terze parti hai utilizzato (oltre a AbsoluteDatabase) e se hai effettuato chiamate API Windows direttamente nella tua applicazione.

Un'altra opzione completamente diversa sarebbe quella di cercare un team offshore per mantenere l'applicazione.Probabilmente possono farlo a buon mercato.Potresti trovare qualcuno a livello nazionale, ma ti costerebbe sicuramente di più (anche se con il dollaro in calo e il mercato del lavoro scarso non si sa mai...)

Buona fortuna!

Altri suggerimenti

È stato pubblicato un rapporto scientifico sulla trasformazione riuscita di un progetto Delphi da 1,5 milioni di righe in C# da parte di John Brant.Ha scritto un parser Delphi, un generatore C# e molte regole di trasformazione sull'AST.L'estensione graduale dell'insieme di regole, l'esecuzione di build giornaliere, molti test unitari e alcune riscritture di parti difficili di Delphi gli hanno permesso con un team di 4 persone, tra cui alcuni degli sviluppatori originali, con una profonda conoscenza di Delphi e C#, di migrare il software in 18 mesi.Essendo John Brant lo sviluppatore originale del browser di refactoring e del kit di costruzione del compilatore SmaCC, è improbabile che tu riesca ad andare così veloce

Molti dei miei utenti si stanno spostando su Vista che può eseguire l'app in modalità di compatibilità o può avere problemi GPF a seconda di come il loro PC è configurato dal loro reparto IT, quindi devo fare un po 'di manutenzione sull'applicazione.Mi chiedo se dovrei saltare in uno stack più familiare.

A meno che tu non stia facendo qualcosa di non standard, le applicazioni D7 dovrebbero funzionare correttamente in Vista.

Per quanto riguarda la conversione in C#, penso che la maggior parte degli strumenti di conversione sarebbe una perdita di tempo.Un approccio migliore potrebbe essere quello di riscrivere l'applicazione da zero.

Non esiste una risposta semplice, ma tieni presente che la variante Delphi.net del linguaggio è destinata al runtime .net e che diversi linguaggi su .net possono interagire strettamente.

Potresti provare a farlo compilare in Delphi.Net, fattorizzando diversi assembly e quindi convertendo gli assembly manualmente uno per uno.Reflector potrebbe aiutare a decodificare il codice compilato in uno scheletro di codice C# - equivalente ma senza commenti, nomi di variabili interne ecc.

D'altra parte, Delphi.net potrebbe essere abbastanza buono (TM) per questo progetto.

Ma a meno che tu non abbia una buona suite di test (immagino probabilmente di no, dato lo stato dell'arte di Delphi 7) introdurrai dei bug.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top