Delivering you an intelligent and high quality result in due time!
With 25+ years of experience in software modernization, Ispirer is well qualified to perform comprehensive application migrations between diverse programming languages and platforms. Apart from the extensive expertise, we rely on our proprietary Ispirer Toolkit to streamline and speed up Delphi to Java conversion.
Check out how Ispirer Toolkit automatically converts Delphi 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 usDrop us a line and we’ll estimate your project for free!
Request a quoteIspirer customization service allows you to get a personal version of the Ispirer Toolkit specifically for your application. With our proprietary tools tailored to your project requirements, you will be able to automate the conversion of your Delphi code to Java with maximum efficiency. A service like this will allow you to ensure a seamless app modernization and reduce manual adjustments to the bare minimum. The engagement model will be as follows:
Our migration experts will demonstrate an example of automated database migration using Ispirer Toolkit. You will have an opportunity to evaluate the benefits of automated Delphi to Java migration after Ispirer Toolkit customization.
Book a demoIspirer 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:
.pas file structure conversion:
unit Splash; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TSplashForm = class(TForm) Panel1: TPanel; Label3: TLabel; Bevel1: TBevel; Label1: TLabel; Image1: TImage; end; var SplashForm: TSplashForm; implementation {$R *.dfm} end.
package units; import handlers.TSplashFormHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Splash { private static Splash instance; private static final Logger LOGGER = LoggerFactory.getLogger(Splash.class); public TSplashFormHandler SplashForm; private Splash() { } public static synchronized Splash getInstance() { if(instance == null) { instance = new Splash(); } return instance; } } package handlers; import forms.TSplashForm; import units.Splash; public class TSplashFormHandler { public TSplashForm form; public TSplashFormHandler(TSplashForm form) { this.form = form; form.setTSplashFormHandler(this); } }
.dfm file structure conversion:
object SplashForm: TSplashForm Left = 204 Top = 123 AutoScroll = False ActiveControl = Panel1 BorderIcons = [] BorderStyle = bsNone ClientHeight = 178 ClientWidth = 168 Font.Color = clBlack Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] PixelsPerInch = 96 Position = poScreenCenter TextHeight = 13 object Panel1: TPanel Left = 0 Top = 0 Width = 168 Height = 178 Align = alClient BevelInner = bvLowered Color = clSilver TabOrder = 0 object Label3: TLabel Left = 23 Top = 125 Width = 123 Height = 19 Caption = 'Marine Adventures' Font.Color = clBlack Font.Height = -16 Font.Name = 'Times New Roman' Font.Style = [fsItalic, fsUnderline] ParentFont = False end object Bevel1: TBevel Left = 10 Top = 150 Width = 147 Height = 2 Style = bsRaised end object Label1: TLabel Left = 60 Top = 158 Width = 47 Height = 13 Caption = 'Loading...' end object Image1: TImage Left = 40 Top = 11 Width = 87 Height = 113 Picture.Data = { } end end end
package forms; import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.plaf.FontUIResource; import java.awt.*; import com.ispirer.sw.controls.TForm; import com.ispirer.sw.controls.TImage; import com.ispirer.sw.types.image.PictureUtils; import handlers.TSplashFormHandler; import org.apache.commons.lang3.StringUtils; public class TSplashForm extends TForm { private static final long serialVersionUID = 1L; private TSplashFormHandler tSplashFormHandler; private TImage Image1 = null; return this.Panel1; } return this.Label3; } return this.Label1; } public TImage getImage1() { return this.Image1; } public TSplashForm() { setDefaultCloseOperation(DISPOSE_ON_CLOSE); setName("SplashForm"); setBorderStyle(BorderStyle.BS_NONE); setBounds(204, 123, 168, 178); setLocationRelativeTo(null); initTSplashForm(); initLayouts(); } private void initTSplashForm() { @Override super.paintComponent(g); g.drawLine(10, 150, 157, 150); } }; this.Image1 = new TImage(); // // Panel1 // this.Panel1.setName("Panel1"); this.Panel1.setBounds(0, 0, 168, 178); this.Panel1.setLayout(null); getContentPane().add(this.Panel1, 0); // // Label3 // this.Label3.setName("Label3"); this.Label3.setBounds(23, 125, 123, 19); this.Label3.setText("<html><u>Marine Adventures</u></html>"); this.Label3.addPropertyChangeListener("text", labelChangeText); this.Panel1.add(this.Label3); // // Label1 // this.Label1.setName("Label1"); this.Label1.setBounds(60, 158, 47, 13); this.Label1.setText("Loading..."); this.Label1.addPropertyChangeListener("text", labelChangeText); this.Panel1.add(this.Label1); // // Image1 // this.Image1.setName("Image1"); this.Image1.setImage(PictureUtils.getTImage(Image1Data)); this.Image1.setBounds(40, 11, 87, 113); this.Panel1.add(this.Image1); } private void initLayouts() { GroupLayout contentPaneLayout = new GroupLayout(getContentPane()); getContentPane().setLayout(contentPaneLayout); contentPaneLayout.setHorizontalGroup(contentPaneLayout.createParallelGroup(GroupLayout.Alignment.LEADING) contentPaneLayout.setVerticalGroup(contentPaneLayout.createParallelGroup(GroupLayout.Alignment.LEADING) } public void setTSplashFormHandler(TSplashFormHandler tSplashFormHandler) { this.tSplashFormHandler = tSplashFormHandler; setActiveControl(this.Panel1); } }
If statement conversion:
if FromEdit.Text = '' then Result := 0 else Result := StrToDate(FromEdit.Text);
if(form.getFromEdit().getText() == null && "".equals(form.getFromEdit().getText().trim())) { result = null; } else { result = LocalDateTime.from(LocalDate.parse(form.getFromEdit().getText(), DateTimeFormatter.ofPattern("M/d/yyyy")).atStartOfDay()); }
For statement conversion:
for I := 0 to Application.ComponentCount - 1 do begin if Application.Components[I] is TForm then begin F := TForm(Application.Components[I]); if (F <> Self) and (F.Visible) then F.Close; end; end;
While statement conversion:
while not Items.EOF do Items.Delete;
while(!form.getItems().isEOF()) { form.getItems().delete(); }
Try catch statement conversion:
try Items.First; finally DeletingItems := False; end;
try { form.getItems().first(); } finally { DeletingItems = false; }
With a proven track record validated by both time and satisfied clients, Ispirer software and services stand as the pinnacle choice for database migration and application modernization. Leveraging years of experience and client feedback, Ispirer guarantees smooth transitions and optimized operational efficiency for businesses of all scales.