본문 바로가기

프로그래밍/언어 - Pascal30

XE6, 파이어몽키 그리고 TWideMemoField 버그 수정 델파이 XE6 버전 이후, 처음으로 파이어몽키를 사용해볼 생각을 하게되었습니다. 일단, 과거 2006년경 작업했던 프로그램을 재작성해보고 있는데요. 여기저기 문제점들이 터져나오네요. ^^ 기존 프로그램 구성은 홈페이지 + 웹서비스 미들웨어(ISAPI) + 클라이언트 입니다. DB 는 MySQL 입니다. 과거 델파이 2005 에서 작업한 프로그램인데요. 일단, 새로이 추가된 DataSnap Server 로 미들웨어를 구성하고 파이어몽키로 다이내믹한 UI 작업을 해보고 있습니다.(추후, 정리해서... 별도 포스팅하겠습니다.) 일단, Frame 으로 별도 창을 만들어 사용해보았는데요. 탭키로 컨트롤 간 이동이 되지 않더라구요. 관련 버그는 Update 1 에서 고쳐졌다고하는데 아직 확인해보지 못했습니다.(12.. 2014. 6. 30.
FPC 오브젝트(object) 형 최초 객체지향 프로그래밍(OOP)이 소개되었을 때, 터보 파스칼(TP)은 record 를 확장한 object 형을 사용하였습니다. 현재 델파이의 경우 class 를 주로 사용하지만 여전히 object 형을 지원하고 있으며 이는 프리 파스칼(FPC) 도 마찬가지입니다. 다음은 레퍼런스 문서에 있는 내용을 제 개인적 기준으로 요약 정리해 보았습니다.^^ 매뉴얼에서는 멤버 변수를 field 로 지칭하고 있습니다. 1. Declaration type TObj = object private Caption: ShortString; public constructor Init; destructor done; procedure SetCaption(AValue: String); function GetCaption: Str.. 2014. 4. 17.
FPC 2.6 지원 CPU 및 OS user.pdf 문서 앞부분 1.2 About the compiler 의 내용입니다. 자꾸 찾아보게 되서... ^^ CPUIntel i386 및 i486, 펜티엄 계열과 상위 버전AMD64/x86_64PowerPCPowerPC64SPARCARMm68k OSDOSLINUXAMIGA (0.99.5 버전만)WINDOWSMac OS XOS/2FREEBSDBEOSSOLARISNETBSDNETWAREOPENBSDMorphOSSymbian 다음은 rtl 소스 디렉토리의 서브 디렉토리 입니다. 정말 다양합니다.ㅎㅎ 일단 당분간 목표는 여기에 개인적으로 작업하고있는 자작 OS 를 추가하는 겁니다. FPC 아니었다면, 컴파일러까지 만들겠다고 생난리를 쳤을텐데 그나마 다행이네요. 아직은 아이디어 단계이긴하지만 자바의 조상이.. 2014. 4. 10.
라자루스(Lazarus) 한글 주석 입력하기...(뻘팁) 아시다시피 현재 라자루스 IDE 상에서 한글 입력이 직접적으로 되지 않습니다. 특히 주석을 작성할 때, 여러모로 곤란한데요. 이를 극복할 수 있는 방법으로 뭐가 있을까요? 어차피 코딩의 95%는 영문이니까... 기왕지사 100% 로 만들어버린다. 아울러 영문작문법 서적을 구입한다.소스가 제공되니까 라자루스 IDE 를 아주 손쉽게 수정해 버린다.(설마 저한테 이런 걸 기대한 건 아니죠? ㅡㅡa)주석은 필요없다. 코드가 이야기를 한다.다른 에디터에서 한글 주석을 작성한 후 복사하고 이를 붙여넣는다. 저는 인간적인 사람이라 4 의 방식을 선호하는 편인데요. 저처럼 4 에 해당하는 분들을 위한 꼼수입니다. 그냥... Ctrl + Shift + T 를 뙇~ 하고 누르십시요. 네네~ ToDo 입력창이 뜹니다. 후후.. 2014. 3. 24.
라자루스(Lazarus) 자동 완성 기능, 대입 연산자(:=) 앞 뒤 공백 삽입하기.. 라자루스 사용 관련 팁을 짧더라도 그때 그때 포스팅하도록 하겠습니다. ^^ 라자루스에서 코딩을 하다보면 IDE 의 자동 완성 기능이 기존 사용하던 습관과 조금 맞지 않을 때가 있습니다. 물론 사람들 마다 차이가 있을 텐데요. 저는 대입 연산자가 항상 거슬리더군요. 앞 뒤를 꼭 띄어 써야 뭔가 불안(?)하지 않다고 할까요? 다행히 라자루스에는 관련 세부 옵션들이 존재합니다. 먼저, Tools > Options... 메뉴를 실행합니다. 그리고 Codetools 의 Space 항목으로 이동합니다. 그리고 아래 이미지처럼 Symobol 항목을 체크하고 적용합니다. Preview 에 해당 옵션 반영시 나타나는 코드가 샘플로 나오니 꼭 확인하시기 바랍니다. 사실 Codetools 의 옵션값들만 잘 통일 시켜도 프로.. 2014. 3. 24.
라자루스(Lazarus) 파일명 대소문자 혼용 사용하기 라자루스에서 파일을 저장할 때 파일명이 자동으로 소문자로 변경되는 경우, Tools > Options > Environment > Naming 설정을 확인합니다. 만약, Auto rename file lowercase 가 선택되어있다면 자동으로 파일명을 소문자로 변경합니다. 대소문자 혼용으로 사용하실 경우라면 No automatic renaming 을 선택하면 됩니다. 별거 아니지만 은근 신경 쓰이던 부분인데... 찾아보니 역시 관련 옵션이 존재하는군요.^^ 2014. 3. 21.
Lazarus Indy 10 설치하기... - 리눅스 델파이를 사용하든 라자루스를 사용하든 애증의 인디 컴포넌트를 피할 수는 없습니다. 어떤식으로든 다시 만나게 되어있죠. 물론, 델파이라면 기본적으로 인디가 설치되어있지만, 라자루스의 경우라면 직접 소스를 받아 설치를 해주어야합니다. 먼저, 소스를 다운로드합니다.(http://www.indyproject.org/Sockets/fpc/index.EN.aspx) 헌데 자세히 보면 zip 으로 압축되어 올라와있는 소스의 경우, 2007년 11월 13일 이후로 전혀 업데이트가 되어있지 않은 상황입니다. 멋모르고 이 녀석을 다운로드하여 설치하면 쏟아지는 에러를 경험할 수 있게 됩니다. 그럼 어떻게 해야할까요? 별 수 없습니다. 그날 그날 올라오는 인디 소스를 체크아웃하여 쓸 수 밖에... ㅡㅡㅋ 불안하시다고요? 하지.. 2014. 3. 19.
Turbo Vision #1 Turbo Vision 1.0 (아마도...)에 대한 개인적인 감상 or 기록입니다. 공부하길 원한다면 도움말을 살펴보거나, http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/PasHTM3/pas/pasles03.html 의 글을 참고하기 바랍니다. 터보 비전 객체의 계층도는 다음과 같다. 최고 조상님은 TObject 가 되시겠고, 모든 Visible 객체는 TView 를 상속받는다. 보통 TView 를 인스턴스화하여 사용하지는 않는다.(상속용) 멤버 변수와 메소드는 다음과 같다. 각각에 대한 상세 설명은 도움말을 참고하면 되겠고... 프로그램의 기준이 될 놈들은 TGroup 을 상속받은 것 중 TProgram, TApplication 이 되시겠다... 2012. 11. 12.
Turbo Pascal 6.0 소스 컴파일 하기... 이래저래 구글링하다보면 TP 6.0 소스를 찾을 수 있다. 그 놈을 가지고 컴팔을 해보기로 결정~ 먼저 DOS 환경을 구축하고, Turbo Assembler 3.0 과 Turbo Pascal 5.5 를 준비하였다. 하지만, 컴파일 실패... 우습게도 돌아다니는 소스를 컴파일하려면 Turbo Assembler 3.0 과 Turbo Pascal 6.0 (으응?) 이 필요하였다. 또한, 빌드를 하는 과정에서 메모리 부족 오류가 뜰 수 있으니 CONFIG.SYS 에서... DOS = HIGH, UMB 상위메모리 처리를 해주고, 한글 관련 기능을 주석처리한다. rem DEVICE=C:\DOS\HBIOS.SYS AUTOEXEC.BAT 에서는 PATH 지정을 한다. 이때 Turbo Assembler 는 C:\TASM.. 2012. 10. 30.
Turbo Pascal 6.0 README 파일 가끔 필요할 때가 있어 정리해둡니다. WELCOME TO TURBO PASCAL 6.0 --------------------------- This README file contains important, last minute information about Turbo Pascal 6.0. In addition to this file, there are several .DOC files in the \TP\DOC directory that you should browse. The HELPME!.DOC file answers many common Technical Support questions. The FIXES.DOC file provides corrections to the printed documen.. 2012. 10. 24.
XE2 에서 Custom VCL Style 을 리소스로 포함하여 사용하기 다음은 직접 제작한 vsf 파일을 리소스로 포함하여 사용할 경우이다. 먼저, Project > Resources and Images.. 를 실행한다. Add... 버튼을 클릭하여 제작한 vsf 파일을 선택한 후, Resource type 을 VCLSTYLE 로 입력한다. Resource identifier 에는 리소스를 불러올때 사용할 이름을 지정한다. 프로젝트에 생성된 RC 파일을 추가한다. 끝으로, 프로젝트 소스에 리소스로부터 스타일을 불러오도록 아래의 코드를 CreateForm 이전에 추가한다. 이때 반드시 uses 에 Vcl.Themes 와 Vcl.Styles 를 추가하여야한다. TStyleManager.SetStyle(TStyleManager.LoadFromResource(HInstance, '.. 2012. 8. 9.
FieldByName 사용팁 FieldByName 의 소스를 보면 다음과 같다. ### delphi function TDataSet.FieldByName(const FieldName: string): TField; begin Result := FindField(FieldName); if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self); end; 3행의 FindField 메소드의 소스는 다음과 같다. ### delphi function TDataSet.FindField(const FieldName: string): TField; begin Result := FFields.FindField(FieldName); if (Result = nil) and Objec.. 2012. 7. 25.
ISAPI 기반 어플리케이션 서버의 데이터베이스 커넥션 처리 DataSnap REST Application Server 또는 SOAP Application Server 를 ISAPI 로 개발할 수 있다. 이때 해당 모듈을 데이터베이스 미들 티어로 사용할 경우라면 DB 커넥션에 대하여 몇 가지 작업을 해주어야한다. 1. 커넥션 관리 Wizard 에서 기본 생성되는 코드를 사용할 경우, 세션이나 요청별로 데이터베이스 커넥션이 발생하여 무수한 TIME_WAIT 를 발생시킨다. 물론 잦은 쿼리가 발생한다면 해당 쿼리당 커넥션 요청이 재발생하여 응답이 느려질 것이다. 다음은 데이터베이스 커넥션을 하나 생성해서 사용하는 방법이다. 물론, 풀링을 구현해서 사용하여도 좋을 것이다. 웹서비스로 개발되었다면, Service activation model 을 Global 로 해준다... 2012. 7. 20.
Delphi XE2 에서 DataSnap REST Application Client 프로젝트에서 New Item 을 실행한 후, DataSnap REST Client Module 을 추가한다. REST Application Server 가 다른 서버에 위치하는 경우엔 Remote Server 를 선택한다. 해당 서버가 단독 실행형이 아닌 IIS 에서 동작한다면, IIS module 을 선택한다. Host name 에 서버의 주소를 입력하고, Port 는 IIS 의 포트를 입력한다. 각종 테스트로 인하여 예제를 든 서버의 경우 9090 포트를 사용하고 있다. URL path 에 어플리케이션 서버가 위치하고 있는 경로를 입력한다.(예로 든 IIS 설정은 2012/06/05 - [프로그래밍/Delphi] - DataSnap REST Application ISAPI 배포 - IIS 7.5 의 .. 2012. 7. 13.
dbExpress MySQL 5.1 한글 테이블명 사용 최근 대부분의 플랫폼에서 유니코드를 지원하는 관계로 자연스레 한글 사용이 늘고 있는데, DBMS 의 테이블명이나 칼럼명도 한글로 사용하는 경우가 있다. MySQL 5.1 에서 기본 문자열을 utf8 로 정의한 후 이를 확인한다. SHOW VARIABLES LIKE 'char%'; 이후 델파이에서 TSQLConnection 설정 후, TSQLQuery 를 실행하거나 TSQLTable 을 사용할 경우 Syntax 오류 또는 ???? 로 테이블명이 나타날 것이다.(아참, libmysql.dll 은 32비트 버전을 구하여 시스템 폴더에 넣어야한다. 64비트 윈도우즈에서도 마찬가지이니 주의할 것.) 해결 방법은 간단하다. TSQLConnection 의 Params 에서 ServerCharSet 을 지정해주면 된다.. 2012. 6. 26.