라자루스로 업무 프로그램 개발이 가능할지 이것 저것 테스트 해보다가 괜찮은 것 같아서 정보를 공유할까 합니다. 취미로 프로그램을 개발하거나 중/소규모의 업무 프로그램을 개발하기에는 충분할 것 같네요. 크게 어려운 내용은 아니라서 능력자분들은 패스하셔도 됩니다. ^^ 이하 존칭은 생략하도록 하겠습니다.
0. 준비작업
0-1. 컴퍼넌트 설치 및 개발환경
개발툴 버전: lazarus-2.0.8-fpc-3.0.4-win64
사용 컴퍼넌트: Indy 10.6.2, zeoslib-7.3-r6603
데이터베이스: Firebird-3.0.5.33220_0_x64
Firebird DB는 Character Set을 UTF8이나 UNICODE_FSS로 생성해야 라자루스에서 한글이 깨지지않는다.
SQL> CREATE DATABASE 'D:\Data\TEST-UNI.FDB' PAGE_SIZE = 8192 USER 'SYSDBA' PASSWORD 'masterkey' DEFAULT CHARACTER SET UNICODE_FSS;
3티어로 개발할 것이기때문에 TCP/IP용 통신 컴퍼넌트가 필요하다. 본 강좌에서는 델파이에도 기본 설치되어있는 Indy 10을 사용하기로 한다.
Indy 컴퍼넌트는 아래 사이트에서 다운 받을 수 있다.
https://github.com/IndySockets/Indy
http://packages.lazarus-ide.org/Indy10.zip
Indy 컴퍼넌트를 라자루스에 설치하면 델파이에서보다 엄청 많은 수의 컴퍼넌트 탭이 생성 된다. 탭 마다 컴퍼넌트 개수가 줄어드는 장점은 있지만 탭이 많아서 스크롤 해야하는 문제가 생긴다. "IdDsnCoreResourceStrings.pas"와 "IdDsnResourceStrings.pas"에 있는 해당 변수의 값을 지우고 설치 하면 탭 개수를 줄일 수 있다.
// IdDsnCoreResourceStrings.pas
{$IFDEF FPC}
// CoreSuffix = ' - Core'; // 2020.06.04 by K.I.S
CoreSuffix = ''; // 2020.06.04 by K.I.S
{$ENDIF}
// IdDsnResourceStrings.pas
{$IFDEF FPC}
//This is part of a workaround for the Lazarus IDE Toolbar being
//unable to scroll.
// 2020.06.04 by K.I.S -- begin
// RSProt = ' Protocols';
// RSProtam = ' Protocols (am)';
// RSProtnz = ' Protocols (nz)';
// RSMappedPort = ' Mapped Port';
// RSEncoder = ' Encoder';
// RSDecoder = ' Decoder';
RSProt = '';
RSProtam = '';
RSProtnz = '';
RSMappedPort = '';
RSEncoder = '';
RSDecoder = '';
// 2020.06.04 by K.I.S -- end
{$ENDIF}
DB 접속용 컴퍼넌트는 기본적으로 SQLdb가 설치되어있는데 몇 가지 문제가 있어서 ZeosLib를 사용하기로 했다. 한가지 예를 들면, char 한 자리로 설정한 필드가 공백이 채워진 3자리의 문자 필드로 반환 되어서 엉뚱하게 처리 되는 문제가 있다.
ZeosLib는 아래 사이트에서 다운 받을 수 있다. 본 예제에서는 개발버전인 7.3을 사용한다. 7.3은 사이트의 Subversion 탭에서 받을 수 있다.
https://sourceforge.net/projects/zeoslib/
그 외 필요한 컴퍼넌트들은 아래 사이트에서 찾을 수 있을 것이다.
https://sourceforge.net/projects/lazarus-ccr/
http://packages.lazarus-ide.org
※ 기본 적으로 라자루스에서 컴파일한 실행 파일에는 디버깅 정보가 포함되어있어서 상당히 크다. 디버그 정보를 끄고 "Optimization levels"를 "-O3"으로 지정한 후 컴파일하면 실행파일의 크기를 줄일 수 있다.
|