Convert Delphi to C#

Delivering you an intelligent and high quality result in due time!

Automated Application Conversion

Do you need to convert your Delphi application to C#? In this case, Ispirer products will be the perfect solution for your project!
Human-written code in each project has its own specifics. It may seem difficult to obtain a high level of automated conversion. With Ispirer it will be a smooth transition. The main advantage of Ispirer Toolkit is the personalization for your conversion project. As a result, you will replace the old technology with all its downsides. The outcome will be a new application without any middleware used afterwards.

How it Works

Ispirer Toolkit

Automated conversion of Delphi to C# with the help of our tool makes it possible to significantly reduce the time and expenses as compared to manual rewriting of the application. The following approach allows to ensure high quality of automated conversion:

1. Preliminary Stage

The stage is carried out to determine the current conversion level of Ispirer Toolkit. The level of conversion depends on the complexity of the source code and the requirements for the target application. You can independently perform the analysis of the source code of your Delphi application, as well as try to convert it to C# using the demo license. Besides, our experts can perform the source code analysis and provide you with examples of its conversion.
If your application is quite specific and large, we recommend to perform PoC to determine the maximum level of automated conversion of your project.
As a result, we will find out whether the customization is required or you can directly proceed to the conversion.

2. Ispirer Toolkit Customization Stage

If this stage is necessary, we will perform the customization to thoroughly prepare the toolkit for the conversion according to your project requirements. We will take a part of a representative code that amounts ussually to ~100,000 lines. The Ispirer technical team will add all the required conversion rules into the tool to achieve the highest possible level of automation or even to get a compilable result. As a delivery, we will provide conversion results of the scope of this customization. The customer will get a tailored and updated tool according to his specific project needs.

3. Use of Ispirer Toolkit

At this stage, you perform the conversion yourself. As to pricing, we apply project-based licensing. Prices depend on its scope and duration. The license includes support as well. If necessary, the conversion may be further improved even at this stage. As a result, customization requests, each of which is processed within 1-3 business days, are added to the license. Our experts will recommend the optimal number of requests considering the complexity and requirements of your project.

Ispirer Toolkit 10 Icon

Ispirer Toolkit 10
Delphi to C#
Free Demo License

Try Now

Ispirer Migration and Modernization Service (Ispirer Service)

Our experienced team can provide you with a turnkey migration service and convert your entire Delphi application to C#, delivering you a ready-to-use application in due time. Our responsibilities include not only professional analysis, assessment, performance and testing of your migration, but also services such as adding new or changing existing functionality of the application.

If you want to get an intermediate result of the converted Delphi code in the C# language, the Ispirer team will be glad to provide you with a basic migration service. As a result, you will get code that is optimized to the compilable level. Further, you will have to independently bring the application to a fully functional state in accordance with your requirements.

You are free to choose a preferred option. Nevertheless, we can provide an estimate of both the Tool and the Service, and give professional advice.

Conversion Overview

Ispirer Toolkit automates the entire project conversion from Delphi to C#. The tool processes the project file, automatically finds and converts all its contents. Ispirer offers conversion to a .NET application based not only on the desktop, but also on the Web architecture.

Conversion features

DelphiC#
Project FilesFiles DPRFiles CSPROJ, USER
Business LogicCode in PascalCode in C#
GUIForms DFMDesktop (WinForms, WPF), Web (ReactJS, AngularJS)
Database AccessBDE, ADOADO.NET, LINQ

Сhoosing Ispirer Toolkit to migrate Delphi to C# you eliminate most of associated risks and considerably reduce internal efforts.
You will definitely convert your current Delphi technology to C# without any middleware used after the process. All these benefits are available at reasonable and competitive costs that makes Ispirer Toolkit even more attractive conversion tool for this project type.

Delphi to C# Conversion Demo

Check out how Ispirer Toolkit automatically converts Transact-SQL application.


Drop us a line, if you have any business inquiries or questions regarding your Delphi conversion project. Ispirer experts will demonstrate our solutions and answer any questions you may have!

Contact us

Conversion Samples of Delphi to C# WinForms

Ispirer Toolkit analyzes all object dependencies during the conversion process and provides not only line-by-line conversion, but resolves type conversions as well. In addition, the software understands and transforms the necessary inheritance dependencies. It parses the entire source code, builds an internal tree with all the information about the objects, and uses it in the migration process. For more information review the code samples below.

Variables declaration conversion:

DelphiC# WinForms
  1.  
  2. var CanClose: Boolean;
  3. CustNo: Double;
  4. DBPath: string;
  5. Key: Char;
  6. I: Integer;
  7. RSCON: TIniFile;
  8.  
  1.  
  2. bool CanClose;
  3. double CustNo;
  4. string Dbpath;
  5. char Key;
  6. int I;
  7. IniFile RSCON = null; //class IniFile implemented in AdditionalClasses
  8.  

.pas file structure conversion:

DelphiC# WinForms
  1.  
  2. unit Splash;
  3.  
  4. interface
  5.  
  6. uses
  7. SysUtils, Windows, Messages, Classes, Graphics, Controls,
  8. Forms, Dialogs, StdCtrls, ExtCtrls;
  9.  
  10. type
  11. TSplashForm = class(TForm)
  12. Panel1: TPanel;
  13. Label3: TLabel;
  14. Bevel1: TBevel;
  15. Label1: TLabel;
  16. Image1: TImage;
  17. end;
  18.  
  19. var
  20. SplashForm: TSplashForm;
  21.  
  22. implementation
  23.  
  24. {$R *.dfm}
  25.  
  26. end.
  27.  
  1.  
  2. using System;
  3. using System.IO;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Windows;
  7. using System.Windows.Forms;
  8. using System.Collections.Generic;
  9.  
  10. namespace Splash
  11. {
  12. public partial class TSplashForm : Form
  13. {
  14. public TSplashForm()
  15. {
  16. InitializeComponent();
  17. }
  18. }
  19. public partial class SplashUnit
  20. {
  21. public static TSplashForm SplashForm { get; set; } = new TSplashForm();
  22. }
  23. }
  24.  

.dfm file structure conversion:

DelphiC# WinForms
  1.  
  2. object SplashForm: TSplashForm
  3. Left = 204
  4. Top = 123
  5. AutoScroll = False
  6. ActiveControl = Panel1
  7. BorderIcons = []
  8. BorderStyle = bsNone
  9. ClientHeight = 178
  10. ClientWidth = 168
  11. Font.Color = clBlack
  12. Font.Height = -11
  13. Font.Name = 'MS Sans Serif'
  14. Font.Style = []
  15. PixelsPerInch = 96
  16. Position = poScreenCenter
  17. TextHeight = 13
  18. object Panel1: TPanel
  19. Left = 0
  20. Top = 0
  21. Width = 168
  22. Height = 178
  23. Align = alClient
  24. BevelInner = bvLowered
  25. Color = clSilver
  26. TabOrder = 0
  27. object Label3: TLabel
  28. Left = 23
  29. Top = 125
  30. Width = 123
  31. Height = 19
  32. Caption = 'Marine Adventures'
  33. Font.Color = clBlack
  34. Font.Height = -16
  35. Font.Name = 'Times New Roman'
  36. Font.Style = [fsItalic, fsUnderline]
  37. ParentFont = False
  38. end
  39. object Bevel1: TBevel
  40. Left = 10
  41. Top = 150
  42. Width = 147
  43. Height = 2
  44. Style = bsRaised
  45. end
  46. object Label1: TLabel
  47. Left = 60
  48. Top = 158
  49. Width = 47
  50. Height = 13
  51. Caption = 'Loading...'
  52. end
  53. object Image1: TImage
  54. Left = 40
  55. Top = 11
  56. Width = 87
  57. Height = 113
  58. Picture.Data = {
  59.   }
  60. end
  61. end
  62. end
  63.  
  1.  
  2. namespace Splash
  3. {
  4. partial class TSplashForm
  5. {
  6. /// <summary>
  7. /// Required designer variable.
  8. /// </summary>
  9. private System.ComponentModel.IContainer components = null;
  10.  
  11. /// <summary>
  12. /// Clean up any resources being used.
  13. /// </summary>
  14. /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
  15. protected override void Dispose(bool disposing)
  16. {
  17. if (disposing && (components != null))
  18. {
  19. components.Dispose();
  20. }
  21.  
  22. base.Dispose(disposing);
  23. }
  24.  
  25.  
  26. #region Windows Form Designer generated code
  27. /// <summary>
  28. /// Required method for Designer support - do not modify
  29. /// the contents of this method with the code editor.
  30. /// </summary>
  31.  
  32. private void InitializeComponent()
  33. {
  34. System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TSplashForm));
  35. this.Panel1 = new System.Windows.Forms.Panel();
  36. this.Label3 = new System.Windows.Forms.Label();
  37. this.Bevel1 = new System.Windows.Forms.Panel();
  38. this.Label1 = new System.Windows.Forms.Label();
  39. this.Image1 = new System.Windows.Forms.PictureBox();
  40. this.Panel1.SuspendLayout();
  41. ((System.ComponentModel.ISupportInitialize)(this.Image1)).BeginInit();
  42. this.SuspendLayout();
  43. //
  44. // Panel1
  45. //
  46. this.Panel1.Controls.Add(this.Label3);
  47. this.Panel1.Controls.Add(this.Bevel1);
  48. this.Panel1.Controls.Add(this.Label1);
  49. this.Panel1.Controls.Add(this.Image1);
  50. this.Panel1.Location = new System.Drawing.Point(0, 0);
  51. this.Panel1.Name = "Panel1";
  52. this.Panel1.Size = new System.Drawing.Size(168, 178);
  53. this.Panel1.TabIndex = 0;
  54. //
  55. // Label3
  56. //
  57. this.Label3.AutoSize = true;
  58. this.Label3.Font = new System.Drawing.Font("Times New Roman", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Italic | System.Drawing.FontStyle.Underline))));
  59. this.Label3.ForeColor = System.Drawing.Color.Black;
  60. this.Label3.Location = new System.Drawing.Point(23, 125);
  61. this.Label3.Name = "Label3";
  62. this.Label3.Size = new System.Drawing.Size(94, 14);
  63. this.Label3.TabIndex = 0;
  64. this.Label3.Text = "Marine Adventures";
  65. //
  66. // Bevel1
  67. //
  68. this.Bevel1.Location = new System.Drawing.Point(10, 150);
  69. this.Bevel1.Name = "Bevel1";
  70. this.Bevel1.Size = new System.Drawing.Size(147, 2);
  71. this.Bevel1.TabIndex = 1;
  72. //
  73. // Label1
  74. //
  75. this.Label1.AutoSize = true;
  76. this.Label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
  77. this.Label1.Location = new System.Drawing.Point(60, 158);
  78. this.Label1.Name = "Label1";
  79. this.Label1.Size = new System.Drawing.Size(54, 13);
  80. this.Label1.TabIndex = 2;
  81. this.Label1.Text = "Loading...";
  82. //
  83. // Image1
  84. //
  85. this.Image1.Image = ((System.Drawing.Image)(resources.GetObject("Image1.Image")));
  86. this.Image1.Location = new System.Drawing.Point(40, 11);
  87. this.Image1.Name = "Image1";
  88. this.Image1.Size = new System.Drawing.Size(87, 113);
  89. this.Image1.TabIndex = 3;
  90. this.Image1.TabStop = false;
  91. //
  92. // TSplashForm
  93. //
  94. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
  95. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  96. this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
  97. this.ClientSize = new System.Drawing.Size(169, 179);
  98. this.Controls.Add(this.Panel1);
  99. this.ForeColor = System.Drawing.Color.Black;
  100. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  101. this.Name = "TSplashForm";
  102. this.Padding = new System.Windows.Forms.Padding(204, 123, 0, 0);
  103. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  104. this.Text = "SplashForm";
  105. this.Panel1.ResumeLayout(false);
  106. this.Panel1.PerformLayout();
  107. ((System.ComponentModel.ISupportInitialize)(this.Image1)).EndInit();
  108. this.ResumeLayout(false);
  109.  
  110. }
  111.  
  112. #endregion
  113.  
  114. private System.Windows.Forms.Panel Panel1;
  115. private System.Windows.Forms.Label Label3;
  116. private System.Windows.Forms.Panel Bevel1;
  117. private System.Windows.Forms.Label Label1;
  118. private System.Windows.Forms.PictureBox Image1;
  119.  
  120.  
  121. }
  122. }
  123.  

If statement conversion:

DelphiC# WinForms
  1.  
  2. if FromEdit.Text = '' then Result := 0
  3. else Result := StrToDate(FromEdit.Text);
  4.  
  1.  
  2. if (FromEdit.Text == string.Empty)
  3. {
  4. getFromDate_result = DateTime.FromOADate(0);
  5. }
  6. else
  7. {
  8. getFromDate_result = Convert.ToDateTime(FromEdit.Text);
  9. }
  10.  

For statement conversion:

DelphiC# WinForms
  1.  
  2. for I := 0 to Application.ComponentCount - 1 do
  3. begin
  4. if Application.Components[I] is TForm then
  5. begin
  6. F := TForm(Application.Components[I]);
  7. if (F <> Self) and (F.Visible) then F.Close;
  8. end;
  9. end;
  10.  
  1.  
  2. for (I = 0; I <= this.Controls.Count - 1; I++)
  3. {
  4. if (this.Controls[I] is Form)
  5. {
  6. F = ((Form)(this.Controls[I] as object));
  7.  
  8. if ((F != this) && (F.Visible))
  9. {
  10. F.Close();
  11. }
  12. }
  13. }
  14.  

While statement conversion:

DelphiC# WinForms
  1.  
  2. while not Items.EOF do
  3. Items.Delete;
  4.  
  1.  
  2. while (!Items.EOF)
  3. {
  4. Items.Delete();
  5. }
  6.  

Try catch statement conversion:

DelphiC# WinForms
  1.  
  2. try
  3. Items.First;
  4. finally
  5. DeletingItems := False;
  6. end;
  7.  
  1.  
  2. try
  3. {
  4. Items.MoveFirst();
  5. }
  6. finally
  7. {
  8. DeletingItems = false;
  9. }
  10.  

Download Sample Code

You have just examined only a piece of the Delphi to C# conversion sample. You can download the entire application migration sample for free by filling out the form. Once you get the code sample, you will be able to:

  • Explore how well Ispirer Toolkit migrates the source code to the target technology without downloading it.
  • Analyze and compare the source sample with your code to understand which components of your application can be automatically converted using Ispirer Toolkit.
  • Run, play with and test an application containing nearly 9,000 lines of code.

See for yourself that Ispirer Toolkit can automatically convert not only a single piece of code, but an entire application. Most likely, complex code will require customization of the toolkit, but our experts can add new conversion rules within 3-5 business days. As a result, using Ispirer Toolkit you will get readable and maintainable code of manual conversion quality in the shortest time possible.

Snatch a totally free opportunity to see the high efficiency of Ispirer Toolkit!

Get your sample code
Enter your name.

Enter a valid e-mail address.

Select your country.

Invalid input.

Get a Quote

Ispirer Toolkit

Reach the maximum level of automation and quality of your conversion with the help of Ispirer Toolkit! Based on your requirements, the Ispirer team will process all customization requests for your Delphi to C# conversion project. We offer several types of Ispirer Toolkit licenses, among which you will find the one that is suitable for you. Each conversion project is considered and discussed separately, prices depend on its scope, duration and complexity.

Ispirer Toolkit 10 Icon

Ispirer Toolkit 10
Delphi to C#

Request a Quote

Ispirer Service

If you don't want to involve your own resources to move the Delphi application to C#, get Ispirer Migration and Modernization Service and we will deliver you an operational and high-quality end-result on time and at a reasonable price. Apart from professional Analysis, Evaluation, Performance and Testing of your migration, we also provide such services as Code Refactoring, Changing Functionality, and Adding Extra Functionality. Each conversion project is reviewed and discussed separately and the final price is a subject to negotiation.

Ispirer Migration Service

Ispirer Migration Service
Delphi to C#

Get an Estimate

Benefits You Get

100% Automation

100% Automation

Due to the customization, the manual work after migration will be minimized or eliminated.

Flexible Pricing

Flexible Pricing

You pay for only what you need: prices depend on the scope and duration of your project.

Optimized Migration

Optimized Migration

You get an intelligent and maintainable code without using any middleware after conversion.

What Our Customers Say

"The tool is easy to use and maintain and it has also improved a lot in terms of performance. This last point was a huge pain and the solution you gave was key for the project succeed. I would not hesitate to suggest Ispirer migration services to other companies."

"Ispirer has been a great choice for the migration of our dated software, thanks to its very flexible and supportive team. All our requests were handled in an accurate manner, and every single request was performed promptly."

"This approach was very successful avoiding any confusion at the first stage, and achieved high conversion rate in the end. The project was completed successfully, they say they couldn't make it without MnMTK 2017 and excellent extension support from lspirer."

"We had an old Borland Delphi 7.0 project, which was brought back to life. Ispirer had offered us a timely and financially attractive conversion of the application. The work was performed promptly."

"We were impressed with the knowledge, professionality, hard work and enthusiasm of the Ispirer team. Through this Migration Project we have a solid base for further expanding our application."

"I really had a surprise after migrating. The quality of generated code after conversion is very high. The tool is very intuitive and easy to use. I believe that there is no such a good tool as SQLWays to do code migration and I really recommend it."

previous arrow
next arrow
Slider

Get in touch with us!

Have questions about migration from Delphi to C#?

Contact us