본문 바로가기
Delphi/프로시저-함수

Delphi Open ToolsAPI (3)

by MonoSoft 2023. 12. 26.
728x90
반응형

Delphi Open ToolsAPI

 

728x90

 

 

 

 

 

모듈의 정의

 

모듈을 쉽게 표현하자면 대표 파일을 가진 편집 단위라고 보면 된다.

프로젝트 그룹, 프로젝트, 유닛, 폼유닛등이 모두 모듈이다.

 

하나 혹은 그 이상의 파일이 하나의 모듈을 구성한다.

폼이 있는 유닛이 대표적인 경우인데

예를들어 Unit1.pas는 Unit1.dfm와 함께 두개의 파일로 구성되어 있으며

대표파일은 Unit1.pas다. 프로젝트나 프로젝트 그룹등도 하나의 모듈로 취급된다.

 

모듈을 찾거나 여는 등의 작업은 파일명을 통해 이루어지는데

이를 대표파일이로 정의하자 (이를 지칭할만한 뚜렷한 이름이생각나지 않는다)

.

대표파일로는 *.pas, *.bpg, *.dpr,*.dpk가 있다.

델파이에 프로젝트 그룹과 프로젝트가 로드된 상태에서

모듈의 파일명을 뽑아본 예가 아래와 같다.

 

모듈의 파일명은 전체경로를 가지고 있다.

저번 강좌에서 살펴본 IOTACustomMessage등을 상속받아 작업할 경우를 포함하여

모든 경우에 파일명은 전체 경로로 다루어져야 안전하다.

 

D:\Work\OTATest\OTATest.pas D:\Work\OTATest\OTATestPackage.dpk C:\ProgramFiles\Borland\Delphi6\Projects\Unit1.pas

C:\Program Files\Borland\Delphi6\Projects\ProjectGroup1.bpg

C:\ProgramFiles\Borland\Delphi6\Projects\Project1.dpr

기억하자. *.pas뿐만 아니라 *.bgp, *.dpr, *.dpk등의

프로젝트와 프로젝트 그룹까지 모두 하나의 모듈이다.

 

 

 

IOTAActionServices

 

IOTAActionServices는 모듈을 열고 저장하고 다시읽고 닫는 등의 작업을 한다.

이중 저장과 닫기는 IOTAModuleServices에서 얻은

IOTAModule을 통해서도 처리할 수 있는데 이어지는 내용에서 다루어진다.

 

IOTAActionServices = interface(IUnknown)

['{F17A7BC9-E07D-11D1-AB0B-00C04FB16FB3}']

{ 열려진파일을 닫는다. 결과가 True이면 성공이다 }

function CloseFile(const FileName: string): Boolean;

{ 파일을연다. 결과가 True이면 성공이다 }

function OpenFile(const FileName: string): Boolean;

{ 프로젝트를연다. 결과가 True이면 성공이다 }

function OpenProject(const ProjName: string; NewProjGroup: Boolean): Boolean;

{ 파일을다시 로드한다. 결과가 True이면 성공이다 }

function ReloadFile(const FileName: string): Boolean;

{ 변경된경우에 저장여부를 묻고 파일을 저장한다. 결과가 True이면 성공이다 }

function SaveFile(const FileName: string): Boolean;

end;

 

ActionServices는 주로 모듈의 대표파일과 관련된 작업을 처리한다.

 

아래는 OpenDialog로 선택한 파일을 IDE로 불러들이는 예다.

 

with OpenDialog do

begin

Filter := 'Delphi files|*.bpg;*.dpr;*.dpk;*.pas|All files (*.*)|*.*';

if Execute then

(BorlandIDEServices as IOTAActionServices).OpenFile(FileName);

Free;

end;

 

 

 

IOTAModuleServices

 

IOTAModuleServices는 모듈의 리스트를 가지고 있으며 특정 모듈을 찾거나

Active된 모듈을 얻거나 새로운 모듈을 여는 등의 작업을 하는 서비스다.

 

메쏘드의 구체적인 용도를 주석으로 달아 보았다.

interface의 특성에 따라 모든 프로퍼티의 read/write는 메쏘드를 이용한다.

 

따라서 프로퍼티의 설명은 그 프로퍼티가 이용하는

메쏘드를 살펴보기 바란다.

 

IOTAModuleServices = interface(IUnknown)

['{F17A7BCD-E07D-11D1-AB0B-00C04FB16FB3}']

{ 새로운 파일시스템을 등록한다 }

function AddFileSystem(FileSystem: IOTAFileSystem): Integer;

{ 프로젝트 그룹을 포함한 모든 모듈을 닫는다 }

function CloseAll: Boolean;

{ 주어진 Creator를 이용해 새로운 모듈을 생성한다 }

function CreateModule(const Creator: IOTACreator): IOTAModule;

{ 현재 Active된 모듈을 얻어온다 }

function CurrentModule: IOTAModule;

{ Name을 통해 파일시스템을 찾아온다 }

function FindFileSystem(const Name: string):

IOTAFileSystem;

728x90
반응형

'Delphi > 프로시저-함수' 카테고리의 다른 글

숫자에 콤마 찍어주기  (0) 2024.03.09
윈도우에 폰트 설치/제거 하기  (0) 2024.03.05
Delphi Open ToolsAPI (2)  (0) 2023.12.19
Delphi Open ToolsAPI  (0) 2023.12.14
윈도우 사용자 이름 알아내기  (0) 2023.11.17

댓글