Delphi 7 애플리케이션을 C# 및 .Net 프레임워크로 변환하는 도구는 무엇입니까?[닫은]

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

  •  09-06-2019
  •  | 
  •  

문제

저는 Delphi 7로 작성된 오래된 PC 전용 애플리케이션을 유지하고 있습니다.과거에는 Delphi가 나에게 아주 좋은 서비스를 제공했지만 지금은 이 응용 프로그램에만 사용하고 언어 능력이 점점 떨어지고 있다는 것을 알게 되었습니다.그 구문은 Java/Ruby의 '본업' 언어와 너무 다르기 때문에 새로운 코드를 작성하는 데 더 오랜 시간이 걸리고 너무 오래되어 많이 사용하지 않았습니다. 상호 작용이제 나에게는 고대처럼 보이는 코드가 관리되지 않습니다!

많은 사용자가 호환 모드에서 앱을 실행할 수 있거나 IT 부서에서 PC를 구성한 방식에 따라 GPF 문제가 발생할 수 있는 Vista로 이동하고 있으므로 응용 프로그램에 대해 일부 유지 관리를 수행해야 합니다.좀 더 친숙한 스택으로 이동해야 할지 궁금합니다.

코드 베이스를 C#으로 변환하는 작업을 수행하고 비표준 구성 요소 변환에만 집중할 수 있는 자동화된 도구가 있습니까?저는 내장된 데이터베이스 구성 요소를 사용하고 있습니다. 절대 데이터베이스 이는 BDE와 호환되고 전체적으로 표준 SQL을 사용하며 Microsoft 세계의 것으로 교체할 수 있는 기본 Delphi HTML 브라우저 구성 요소입니다.

이 변환 도구는 얼마나 좋은가요?

도움이 되었습니까?

해결책

해당 변환을 수행하는 자동화된 도구는 없습니다.개인적으로 저는 Delphi를 계속 사용하거나 새 버전으로 업그레이드할 것을 제안합니다.Delphi에서 C#으로 변환을 시도하는 몇 가지 코드 DOM을 보았지만 라이브러리 문제는 해결되지 않았습니다.

CodeGear(공식적으로 Borland)에는 다음을 위한 도구가 있습니다. C#에서 델파이로 가다 괜찮습니다.나는 다른 방향으로 가는 도구가 동일하게 작동할 것이라고 가정합니다(많은 편집이 필요함).다음은 동일한 CodeDOM 원칙에 따라 작동하는 스웨덴 도구입니다. 델파이에서 C#으로 (및 기타 여러 언어).다른 것들도 있는데 지금은 찾을 수 없습니다.

또 다른 옵션은 최신 버전의 .NET용 Delphi로 업그레이드하고 그런 방식으로 코드를 .NET으로 포팅하는 것입니다..NET용 Delphi에서 작동하게 되면(.NET 버전이 없는 경우 임베디드 DB를 제외하면 꽤 쉬울 것임) 다음을 사용할 수 있습니다. .NET 리플렉터 그리고 파일 디스어셈블러 IL을 C#으로 바꿉니다.여전히 VCL을 사용하지만 오브젝트 파스칼 대신 C#을 사용할 수 있습니다.

또 다른 유사한 솔루션은 다음으로 포팅하는 것입니다. RemObjects의 산소.나는 그들이 WinForms로의 Delphi Win32 마이그레이션 경로를 가지고 있다고 믿습니다.그런 다음 사용 .NET 리플렉터 그리고 파일 디스어셈블러 IL을 C#으로 바꿉니다.

간단히 말해서, 쉬운 대답은 없습니다.언어 마이그레이션은 라이브러리 마이그레이션보다 쉽습니다.많은 부분은 AbsoluteDatabase 이외의 타사 구성 요소를 사용한 것과 응용 프로그램에서 직접 Windows API 호출을 수행했는지 여부에 따라 달라집니다.

완전히 다른 또 다른 옵션은 애플리케이션을 유지하기 위해 해외 팀을 찾는 것입니다.아마도 그렇게 하는 것이 저렴할 것입니다.국내에서 누군가를 찾을 수는 있지만 비용이 더 많이 들 것이라는 점은 의심할 여지가 없습니다(비록 달러 하락과 열악한 고용 시장으로 인해 결코 알 수는 없지만)...)

행운을 빌어요!

다른 팁

John Brant가 150만 라인의 델파이 프로젝트를 C#으로 성공적으로 전환했다는 과학적 보고서가 있습니다.그는 델파이 파서, C# 생성기 및 AST에 대한 많은 변환 규칙을 작성했습니다.점차적으로 규칙 집합을 확장하고, 일일 빌드를 수행하고, 많은 단위 테스트를 수행하고, 어려운 Delphi 부분을 일부 다시 작성함으로써 4명의 팀을 구성할 수 있었으며, 그 중 Delphi 및 C#에 대한 깊은 지식을 갖춘 원래 개발자 중 일부가 18개월 만에 소프트웨어.John Brant는 리팩토링 브라우저와 SmaCC 컴파일러 구성 키트의 최초 개발자이기 때문에 그렇게 빨리 진행할 수는 없을 것입니다.

많은 사용자가 Vista로 이동하여 호환성 모드에서 앱을 실행하거나 IT 부서에서 PC를 구성하는 방식에 따라 GPF 문제가있을 수 있으므로 응용 프로그램에 대해 약간의 유지 관리를 수행해야합니다.더 친숙한 스택으로 점프 해야하는지 궁금합니다.

표준이 아닌 작업을 수행하지 않는 한 D7 응용 프로그램은 Vista에서 제대로 실행됩니다.

C#으로의 변환에 관해서는 대부분의 변환 도구가 시간 낭비라고 생각합니다.더 나은 접근 방식은 애플리케이션을 처음부터 다시 작성하는 것입니다.

쉬운 대답은 없지만 Delphi.net 변형 언어는 .net 런타임을 대상으로 하며 .net의 다양한 언어가 긴밀하게 상호 운용될 수 있다는 점을 염두에 두십시오.

Delphi.Net에서 컴파일하고 여러 어셈블리로 분해한 다음 어셈블리를 하나씩 직접 변환해 볼 수 있습니다.Reflector는 컴파일된 코드를 C# 코드의 골격으로 리버스 엔지니어링하는 데 도움이 될 수 있습니다. 주석, 내부 변수 이름 등은 없지만 동일합니다.

반면에 Delphi.net은 이 프로젝트에 충분할 수 있습니다(TM).

그러나 좋은 테스트 스위트가 없다면(Delphi 7의 최신 기술을 고려하면 아마 그렇지 않을 것 같습니다) 버그가 발생하게 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top