PR CENTER

뉴스룸     |     료실

mobile background

PR CENTER

델파이 → C#(.NET) 변환 가이드

관리자
2025-11-03
조회수 40

델파이 → C#(.NET) 변환 가이드


1️⃣ 프로젝트 구조 매핑

구분DelphiC#(.NET)
UI 계층Form (.dfm/.pas)WPF (.xaml/.cs) / WinForms (.Designer.cs)
데이터 계층TQuery, TADOConnection, FireDACEntity Framework Core / Dapper / ADO.NET
공통 유틸Unit (Utils, Common 등)Static class / Helper class
전역 변수Global Unit 변수Singleton / DI 주입 서비스
데이터모듈TDataModuleService class / Repository class
이벤트OnClick, OnChange이벤트 핸들러 (Button.Click += …)
패키지.dpkNuGet 패키지 (.csproj 종속성)

2️⃣ 문법 변환 규칙

🔹 변수 선언

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8078-8ef2-ec35e4939488">var i: Integer; s: String; f: Double;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80d7-a7df-ce19be133f40">int i; string s; double f;

🔹 함수 / 프로시저

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8093-9528-cec83f71f7bf">function Add(a, b: Integer): Integer; begin Result := a + b; end;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80ad-9882-d00ae9ebd43f">int Add(int a, int b) { return a + b; }

🔹 클래스 선언

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8062-af40-c3cd087ad089">type TPerson = class private FName: string; public constructor Create(AName: string); procedure ShowName; end;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-806a-b584-d3177fd9df68">class Person { private string Name; public Person(string name) { Name = name; } public void ShowName() { Console.WriteLine(Name); } }

🔹 속성(Property)

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80ba-8ff2-ec7d13a22e15">property Name: string read FName write FName;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8096-a547-c42879ce1065">public string Name { get; set; }

🔹 배열 및 리스트

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80b5-8f6a-defa6d80db99">arr: array of Integer; SetLength(arr, 10);

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-802a-a529-c8a6eb23df9e">int[] arr = new int[10];

혹은

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80d6-bf98-cb3c91677bd2">List<int> list = new List<int>();

🔹 문자열 처리

DelphiC#
Length(s)s.Length
Copy(s, 2, 5)s.Substring(1, 5)
Pos('a', s)s.IndexOf("a")
UpperCase(s)s.ToUpper()
LowerCase(s)s.ToLower()
Trim(s)s.Trim()

3️⃣ 데이터 접근 매핑

🔹 Delphi FireDAC / ADO

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-807f-a275-ea2da975c9e9">FDQuery.SQL.Text := 'SELECT * FROM CUSTOMER WHERE ID = :ID'; FDQuery.ParamByName('ID').AsInteger := 10; FDQuery.Open;

🔹 C# Entity Framework Core

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8039-b390-f8d6f7857fa0">var customer = db.Customers.FirstOrDefault(c => c.Id == 10);

또는 Dapper 사용 시:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80d3-9813-e0712a30b842">var customer = conn.QueryFirstOrDefault<Customer>( "SELECT * FROM CUSTOMER WHERE ID = @Id", new { Id = 10 });

4️⃣ UI 이벤트 매핑

DelphiC#
Button1.OnClick := Button1Click;button1.Click += Button1_Click;
procedure Button1Click(Sender: TObject);private void Button1_Click(object sender, EventArgs e)
Edit1.Text := 'Hello';textBox1.Text = "Hello";
FormCreate(Sender)Form_Load(object sender, EventArgs e)

5️⃣ DB 트랜잭션 변환

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8013-8ed8-ef3cd78bd5f8">FDConnection.StartTransaction; try FDQuery.ExecSQL; FDConnection.Commit; except FDConnection.Rollback; end;

C# (EF Core)

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-802e-8f78-eab7b2645253">using var transaction = db.Database.BeginTransaction(); try { db.SaveChanges(); transaction.Commit(); } catch { transaction.Rollback(); }

6️⃣ 전역 변수 / Singleton 패턴 대체

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-807d-8e81-d0b5134dca58">var gUserName: string;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-805a-9335-ca72a49ac67c">public static class GlobalData { public static string UserName { get; set; } }

또는 DI 기반 서비스 등록

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80ff-a2d5-f47d0dba3731">builder.Services.AddSingleton<UserContext>();

7️⃣ 예외 처리

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8085-81cd-f32a323e03a0">try x := 1 div 0; except on E: Exception do ShowMessage(E.Message); end;

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8018-8213-fa47e3525299">try { int x = 1 / 0; } catch (Exception ex) { MessageBox.Show(ex.Message); }

8️⃣ 파일 입출력

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-805a-b54f-f2aa38f9e138">AssignFile(f, 'data.txt'); Reset(f); ReadLn(f, s); CloseFile(f);

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80f1-9a41-d6bc147b8665">using (StreamReader sr = new StreamReader("data.txt")) { string s = sr.ReadLine(); }

9️⃣ 외부 DLL / API 호출

Delphi

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-80d9-9cc0-ec8ed544f7eb">function GetTickCount: Cardinal; stdcall; external 'kernel32.dll';

C#

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"><pre class="code code-wrap" id="29cbad7c-b227-8034-b7f5-c7a893555ff9">[DllImport("kernel32.dll")] static extern uint GetTickCount();

🔟 추가 권장 사항

항목권장 방식
프로젝트 구조Multi-layer (Presentation, Business, Data)
설정 파일appsettings.json (Delphi ini 대체)
로그 관리Serilog, NLog
의존성 주입.NET DI Container
빌드 및 배포dotnet publish / CI-CD Pipeline
테스트xUnit / NUnit
형상관리Git + Branch 전략 (module 단위 병행 전환)

                                                                                                                                                                                                                                                                                                                                 ⭐ 발표자 : 이영청님

0 0

페이지 바로가기

@2024 K2SYSTEMS. All rights reserved.

HOME       |       ABOUT US       |       SOLUTION       |       PR CENTER       |       CONTACT       |       인재채용       |       kakao i cloud 고객센터  

@2024 K2SYSTEMS. All rights reserved.