본문 바로가기

Delphi Tip280

SameText를 활용한 대소문자 구분 없는 문자열 비교 SameText를 활용한 대소문자 구분 없는 문자열 비교 문자열 비교 시 대소문자를 구분하지 않고 비교하고 싶다면 SameText 함수를 사용하면 됩니다. = 연산자보다 더 명확하고 안정적으로 조건을 처리할 수 있어 사용자 입력 비교 등에 매우 유용합니다. uses System.SysUtils; procedure CompareTextDemo; var Input1, Input2: string; begin Input1 := 'Delphi'; Input2 := 'delphi'; if SameText(Input1, Input2) then ShowMessage('같은 문자열입니다.') else ShowMessage('다른 문자열입니다.'); end; SameText(A, .. 2025. 4. 22.
ExtractFileName과 ExtractFilePath를 함께 활용한 경로 분리 ExtractFileName과 ExtractFilePath를 함께 활용한 경로 분리 파일 경로를 다룰 때 전체 경로에서 파일명과 폴더 경로를 따로 분리해야 할 일이 많습니다. 델파이에서는 ExtractFileName과 ExtractFilePath 함수를 함께 사용하면 간단하게 처리할 수 있습니다. uses System.SysUtils; procedure SplitFilePath; var FullPath, OnlyFile, OnlyPath: string; begin FullPath := 'C:\Projects\MyApp\Report.pdf'; OnlyFile := ExtractFileName(FullPath); OnlyPath := ExtractFilePath(FullPath); .. 2025. 4. 21.
Trim, TrimLeft, TrimRight로 공백 제거하기 Trim, TrimLeft, TrimRight로 공백 제거하기사용자 입력, 파일 처리, 문자열 비교를 할 때 앞뒤 공백이 문제를 일으킬 수 있습니다. 델파이에서는 Trim 관련 함수를 통해 문자열의 공백을 손쉽게 제거할 수 있어 데이터 정제에 매우 유용합니다. uses System.SysUtils; procedure TrimExample; var RawText, CleanedText: string; begin RawText := ' Hello Delphi! '; CleanedText := Trim(RawText); ShowMessage('[' + CleanedText + ']'); // 결과: [Hello Delphi!] end; Trim: 문자열 양쪽 끝 공백 제거 Tr.. 2025. 4. 17.
ChangeFileExt를 사용한 파일 확장자 변경하기 ChangeFileExt를 사용한 파일 확장자 변경하기 ChangeFileExt 함수는 파일 경로의 확장자를 쉽게 변경할 수 있게 해주는 유틸리티입니다. 예를 들어 .txt 파일을 .bak 파일로 바꾸거나, 특정 작업 후 저장 포맷을 바꿔야 할 때 매우 유용합니다. uses System.SysUtils; procedure ChangeExtensionDemo; var OriginalFile, NewFile: string; begin OriginalFile := 'C:\Backup\data.txt'; NewFile := ChangeFileExt(OriginalFile, '.bak'); ShowMessage('변경된 파일명: ' + NewFile); end; 기존 경로에서 확장자만 바.. 2025. 4. 16.
ExtractFileExt를 사용한 파일 확장자 추출 ExtractFileExt를 사용한 파일 확장자 추출 파일 경로에서 확장자를 따로 분리하고 싶을 때는 ExtractFileExt 함수를 사용하면 매우 간단합니다. 파일 유형 판단이나 확장자 필터링, 조건 분기 등에 자주 쓰입니다. uses System.SysUtils; procedure ShowFileExtension; var FilePath, Extension: string; begin FilePath := 'C:\Users\Documents\report.pdf'; Extension := ExtractFileExt(FilePath); // ".pdf" ShowMessage('확장자: ' + Extension); end; ExtractFileExt는 경로에서 확장자만 추출함 (점 .. 2025. 4. 15.
Screen.Cursors를 이용한 마우스 커서 변경 Screen.Cursors를 이용한 마우스 커서 변경  사용자에게 작업 진행 중임을 시각적으로 알려주고 싶을 때  마우스 커서를 바꾸는 것이 좋은 방법입니다.  Screen.Cursors를 사용하면 특정 작업 중에는 '모래시계', 완료 후에는 기본 커서로 되돌리는 등 UX 향상에 도움이 됩니다. uses   Vcl.Forms, Vcl.Controls, Vcl.Dialogs; procedure LongRunningTask; begin   Screen.Cursor := crHourGlass;  // 모래시계 커서 표시   try     Sleep(3000);  // 3초간 작업     ShowMessage('작업 완료!');   finally     Screen.Cursor := crDefault;  // .. 2025. 4. 12.
ForceDirectories로 중첩된 폴더 자동 생성하기 ForceDirectories로 중첩된 폴더 자동 생성하기파일을 저장할 때 필요한 폴더가 없으면 오류가 발생할 수 있습니다.  이때 ForceDirectories 함수를 사용하면 다단계 폴더도  한 번에 생성할 수 있어 매우 유용합니다.  특히 백업 폴더나 사용자 디렉토리를 미리 생성해야 할 때 좋습니다. uses   System.SysUtils; procedure CreateFolderStructure; var   FolderPath: string; begin   FolderPath := 'C:\MyApp\Data\Backup\2025\04\11';   if ForceDirectories(FolderPath) then     ShowMessage('폴더가 성공적으로 생성되었습니다!')   else   .. 2025. 4. 11.
Application.ProcessMessages의 역할과 주의점 Application.ProcessMessages의 역할과 주의점 델파이에서 Application.ProcessMessages는  현재 대기 중인 Windows 메시지를 즉시 처리하도록 하는 함수입니다.  주로 루프나 지연 작업 중 UI가 멈추지 않도록 할 때 사용됩니다.  하지만 과도한 사용은 오히려 성능과 안정성에 부정적인 영향을 줄 수 있어  신중하게 써야 합니다. procedure TForm1.Button1Click(Sender: TObject); var   I: Integer; begin   for I := 1 to 100 do   begin     Label1.Caption := Format('진행 중: %d%%', [I]);     Application.ProcessMessages; // U.. 2025. 4. 8.
ExtractFilePath와 ExtractFileName을 활용한 파일 경로 분리 ExtractFilePath와 ExtractFileName을 활용한 파일 경로 분리 파일 전체 경로에서 폴더 경로 또는 파일 이름만  따로 추출하고 싶을 때 ExtractFilePath와 ExtractFileName 함수를  사용하면 매우 편리합니다.  설정 파일, 로그 파일, 사용자 선택 파일 처리 시 자주 사용됩니다. uses   System.SysUtils; procedure SplitFilePath; var   FullPath, PathOnly, FileOnly: string; begin   FullPath := 'C:\Program Files\MyApp\data.txt';   PathOnly := ExtractFilePath(FullPath);   // "C:\Program Files\MyApp.. 2025. 4. 3.
TComboBox.Items.Objects를 활용한 데이터 연동 TComboBox.Items.Objects를 활용한 데이터 연동  TComboBox에 표시되는 항목에 추가 정보를 함께  저장하고 싶을 때 Items.Objects를 활용하면 유용합니다.  각 항목에 객체 또는 포인터를 연결해 비즈니스 로직과 연동할 수 있습니다. procedure TForm1.FormCreate(Sender: TObject); begin   ComboBox1.Items.AddObject('사과', TObject(PtrInt(100)));   ComboBox1.Items.AddObject('바나나', TObject(PtrInt(200)));   ComboBox1.Items.AddObject('오렌지', TObject(PtrInt(300))); end; procedure TForm1.Com.. 2025. 4. 2.
TStopwatch를 이용한 실행 시간 측정 TStopwatch를 이용한 실행 시간 측정  성능 분석이나 특정 코드 블록의 처리 시간을 측정할 때는  System.Diagnostics 유닛의 TStopwatch를 사용하는 것이  가장 간편하고 정확합니다.  특히 반복 루프나 쿼리 실행 시간 측정에 유용합니다. uses   System.Diagnostics, System.SysUtils; procedure MeasureExecutionTime; var   Stopwatch: TStopwatch;   I: Integer; begin   Stopwatch := TStopwatch.StartNew;   // 시간 측정 대상 코드   for I := 1 to 1000000 do     Inc(I);   Stopwatch.Stop;   ShowMessage(.. 2025. 3. 27.
타이머(TTimer)를 이용한 주기적 작업 처리 타이머(TTimer)를 이용한 주기적 작업 처리 타이머(TTimer)를 이용한 주기적 작업 처리 TTimer는 주기적으로 어떤 작업을 수행하고 싶을 때 유용하게  사용할 수 있는 컴포넌트입니다.  예를 들어, UI 갱신, 자동 저장, 상태 체크 등에 활용 procedure TForm1.FormCreate(Sender: TObject); begin   Timer1.Interval := 1000;  // 1000ms = 1초   Timer1.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin   Label1.Caption := TimeToStr(Now);  // 매초 현재 시간 표시 end; Interval 속성은 실행 간격(.. 2025. 3. 24.
[1편] VCL 컴포넌트란? 개요 및 기본 개념 VCL 컴포넌트   1. VCL(Visual Component Library)이란?VCL(Visual Component Library)은 Delphi에서 제공하는 UI 컴포넌트 라이브러리로, Windows 애플리케이션을 쉽게 개발할 수 있도록 다양한 UI 요소를 제공합니다. Delphi 개발 환경에서는 VCL을 활용하여 폼 기반(Form-based) 애플리케이션을 제작하며, 코드 작성 없이 드래그 앤 드롭 방식으로 UI를 구성할 수 있습니다.✔ VCL을 사용하면?UI 개발 속도 향상: 컴포넌트를 배치하고 속성을 조정하는 것만으로 UI 제작이 가능복잡한 UI 요소를 쉽게 구성: TButton, TEdit, TPanel 등 다양한 컴포넌트 제공강력한 Windows 네이티브 지원: 윈도우즈 환경에 최적화된 U.. 2025. 2. 17.
Frame을 활용한 최종 통합 및 실행 Frame을 활용한 최종 통합 및 실행  이제까지 Frame을 활용하여 폴더 탐색, 파일 목록 정리, 이미지 표시 기능을 각각 독립적으로 구현하는 방법을 알아봤습니다.이번 포스팅에서는 이 모든 Frame을 하나로 통합하여완전한 Image Viewer 프로그램을 실행하는 과정을 살펴보겠습니다. Frame을 활용한 최종 구조우리가 구현한 Image Viewer는 아래와 같은 3개의 주요 Frame을 포함합니다:TfrFolder Frame폴더 트리 탐색 기능 담당선택된 폴더의 이미지 파일 목록을 TfrImageList에 전달TfrImageList Frame전달받은 이미지 파일 목록을 정렬하여 나열클릭하면 선택된 이미지를 강조 표시TfrImage Frame개별 이미지를 표시하고 선택 이벤트를 처리이제 이 Fra.. 2025. 1. 30.
Frame 활용 실습 주요 구현 코드 Frame 활용 실습 주요 구현 코드 이번 포스팅에서는 Delphi에서 Frame을 활용하여 실제로 구현하는 주요 코드를 살펴보겠습니다.이를 통해 Frame을 활용한 프로그래밍이 얼마나 강력하고 효율적인지 체험할 수 있습니다.특히, 코드 작성의 흐름과 중요한 메서드의 동작 방식을 중심으로 설명하겠습니다. Frame 활용 실습 목표폴더 탐색 및 파일 로딩사용자가 특정 폴더를 선택하면 해당 폴더의 파일 목록을 불러옵니다.이미지 표시 및 정렬선택된 파일 중 이미지를 화면에 정렬하여 표시합니다.독립적인 코드 관리Frame을 활용하여 각 기능을 분리해 관리합니다. Frame의 주요 메서드 구현1. 폴더 탐색 기능 (TfrFolder)폴더 트리 구조를 탐색하고, 선택된 폴더의 파일 목록을 가져오는 역할을 합니다. .. 2025. 1. 24.
Delphi에서 Frame 추가 및 설정하기 Delphi에서 Frame 추가 및 설정하기   프로그래밍에서 Frame은 독립적인 UI 요소를 구성하고 관리하는 데 매우 유용합니다.이번 포스팅에서는 Delphi IDE에서 Frame을 추가하고 설정하는 방법을 단계별로 설명하겠습니다.이를 통해 Frame 기반 프로젝트를 시작하는 데 필요한 기본기를 익힐 수 있습니다. Frame 추가하기Delphi에서 Frame을 추가하는 방법은 간단합니다.새 프로젝트 생성Delphi IDE에서 File > New > VCL Forms Application을 선택합니다.기본적으로 생성된 폼(Form)은 Form1이라는 이름을 가집니다.Frame 추가File > New > Other... 메뉴를 선택합니다.Delphi Files > Frame을 선택한 뒤, 새 Frame.. 2025. 1. 23.
Frame 구조 설계와 분업화 Frame 구조 설계와 분업화  프로그래밍에서 코드의 분업화와 모듈화는 프로젝트의 성공을 좌우하는 중요한 요소입니다. Frame을 활용하면 기능별로 코드를 독립적으로 관리하고 분업화할 수 있습니다. 이번 포스팅에서는 Frame 구조 설계와 분업화 방법을 소개합니다.Frame을 활용한 구조 설계의 필요성하나의 폼(Form)에 모든 기능을 구현하면 코드가 복잡해지고, 수정이나 확장이 어려워집니다. 이와 같은 문제를 해결하기 위해 Frame을 사용하면 다음과 같은 이점이 있습니다:독립적 기능 관리각 Frame이 특정 역할만 담당하여 코드가 간결해집니다.코드 가독성 향상기능별로 분리된 코드 구조로 인해 읽고 이해하기가 쉬워집니다.유지보수 용이성특정 기능을 수정할 때 해당 Frame만 변경하면 됩니다.Frame .. 2025. 1. 15.
Frame을 활용한 Image Viewer 개발 Frame을 활용한 Image Viewer 개발  이번 포스팅에서는 Frame을 활용하여 간단한 Image Viewer를 개발하는 방법을 알아보겠습니다. 기존에 복잡하게 작성된 코드를 Frame으로 분리하고, 효율적으로 관리할 수 있는 구조로 만드는 과정을 살펴봅니다. 왜 Image Viewer에 Frame을 활용해야 할까요?Image Viewer는 폴더 탐색, 파일 로딩, 이미지 표시 등의 기능을 포함한 프로그램입니다. 기존 방식으로 코드를 작성하면:모든 코드가 하나의 폼(Form)에 작성되어 복잡도가 증가합니다.기능별로 나눠지지 않아 유지보수가 어려워집니다.하지만 Frame을 활용하면:코드 분업화: 폴더 탐색, 파일 로딩, 이미지 표시 기능을 각각의 Frame으로 나눌 수 있습니다.가독성 향상: 각 .. 2025. 1. 6.
Frame을 활용한 간단한 프로그램 예제 Frame을 활용한 간단한 프로그램 예제   프로그래밍에서 간결하고 효율적인 코드 작성은 매우 중요합니다. 특히, 한 화면에 여러 기능이 필요하거나 중복 작업을 줄이고 싶을 때, Frame은 훌륭한 해결책이 될 수 있습니다. 이번 포스팅에서는 Frame을 사용한 간단한 프로그램 예제를 통해 실전 활용법을 알아보겠습니다.Frame을 사용하지 않은 경우의 문제점Frame을 사용하지 않으면 모든 기능을 하나의 폼(Form)에 구현해야 합니다. 이 경우:코드가 한 곳에 집중되어 가독성이 떨어집니다.동일한 기능을 여러 폼에서 사용해야 할 때 코드 중복이 발생합니다.유지보수 시 특정 기능만 수정하려 해도 다른 코드에 영향을 줄 가능성이 큽니다.이런 문제를 해결하기 위해 Frame을 활용하면 코드의 캡슐화와 재사용성.. 2025. 1. 5.
프로그래머라면 알아야 할 Frame 활용의 기본 개념 프로그래머라면 알아야 할 Frame 활용의 기본 개념  프로그래밍을 하다 보면 한 화면에서 다양한 기능을 그룹화해야 할 때가 많습니다. 특히, 하나의 폼(Form)에 여러 컴포넌트를 추가하게 되면 코드가 복잡해지고 유지보수가 어려워질 수 있습니다. 이런 경우, TFrame을 활용하면 보다 효율적으로 화면을 설계하고 코드를 관리할 수 있습니다.Frame이란 무엇인가요?Frame은 Delphi에서 제공하는 유용한 UI 설계 도구로, 하나의 폼을 여러 개로 나눠 작업할 수 있도록 도와줍니다. 쉽게 말해, **"재사용 가능한 미니 폼"**이라고 할 수 있습니다. Frame을 사용하면 각 기능별로 코드를 캡슐화하고 독립적으로 관리할 수 있어, 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.Frame을 왜.. 2025. 1. 4.