본문 바로가기
Delphi/Delphi란?

Delphi란...{6}

by MonoSoft 2021. 4. 26.
728x90
반응형

Delphi란...{6}

델파이로 만든 DB 프로그램에서의 한글 입력

──────────────────────────────────

먼저 델파이로 DB 프로그램을 작성할 때 많은 분들이 한글 입력이 잘

되지 않는다고 질문을 하고 있어서 여기에 간단하게 델파이의 DB

프로그램에서 한글 입력을 아무런 문제없이 할 수 있는 방법을 소개

하고자 한다.

 

델파이의 DB에서 한글 문제가 발생하는 이유는

Database Engine Configuration에서 환경 설정을 잘못하였기 때문

이다. 환경설정은 다음과 같이 한다.

 

델파이 그룹에서 Database Engine Configuration을 실행시킨 후

DBASE 의 LANGDRIVER를 dBase KOR cp949로 선택하고

PARADOX의 LANGDRIVER는 Paradox Korea 949를 선택한 후 저장

한 다음에 데이타베이스 파일(테이블)을 작성하면 된다.

위와 같이 한번만 설정하여 주면 된다.

 

그렇게 설정한 후에 생성한 데이타베이스 테이블에서는 한글 사용에

문제가 없지만, 그렇게 설정하기 전에 생성된 파일에서는 여전히

한글 문제가 발생한다. 이미 작성된 테이블에 한글 입력을 할 수

있는 방법은 아래에 설명하였다.

 

델파이에 함께 따라오는 Database Desktop이라는 유틸리티에서는

한글 입력이 잘 되지 않는데, 이것은 다음과 같이 해결할 수 있다.

위에서 말한 것과 같이 설정하고 작성한 DB 테이블을 Database

Desktop에서 불러 올려서 한글을 입력할 때는 문제가 없을 것이다.

간혹 위와 같이 설정하고 작성한 DB 테이블에도 그런 문제가 발생

한다면 키보드의 키가 ON 되어 있는지 확인하기 바란다.

만약 키가 Off되어 있다면 ON으로 하고 한글 입력을

해 보기 바란다. 그러면 문제가 없을 것이다. Database Desktop에서

한글 입력시 반드시 키가 ON되어 있는 상태에서 하여야

한다.

 

그러나 델파이로 만든 DB 프로그램에서 한글 입력할 때에는

키의 ON, Off 상태와는 상관 없이 한글을 입력할 수 있

다. 이것은 Database Desktop 이라는 유틸리티만의 문제이다.

 

그리고 이미 언어 설정을 하지 않은 상태에서 작성한 테이블에 한글

을 입력하기 위해서는 그 테이블의 언어 설정을 바꾸어 주면 된다.

바꾸는 방법은 Database Desktop을 실행시키고 바꾸고자 하는 테이블

을 열고 메뉴의 < Table/Restructure Table... >을 선택하고,

대화상자의 Table Properties 항목에서 Table Language를 선택하고

Modify를 클릭하여 언어를 위에서 언급한 것과 같이 설정하고 저장

하면 된다.

 

그리고 바꾸고자 하는 테이블이 열려 있지 않은 상태에서는 메뉴의

< Utilities/Restructure.. >을 선택하여 원하는 파일을 지정하고

같은 방법으로 하면 된다.

 

Database Desktop에서 한글을 입력하려면 반드시 Num Lock키가 ON

으로 설정되어 있어야 함을 잊지 말기 바란다.

 

 

 

코드 에디터에서의 컬럼 블럭 설정하기

──────────────────────────────────

델파이의 코드 에디터는 실로 막강하다. 개발자가 필요로 하는 기능

은 모두 갖고 있다고 해도 틀린 말은 아닐 것이다. 또한 환경 설정

에서 개발자의 취향대로 에디터 환경을 설정할 수도 있다.

 

이번에는 코드 에디터에서 컬럼 블럭을 잡는 방법을 간단하게 소개하

고자 한다. 컬럼 블럭을 잡는 방법은 두 가지가 있다.

 

1. 키보드만 사용하는 방법

 

코드 에디터를 열고 컬럼 블럭을 잡고자 하는 부분에 캐럿을 위치

시킨다. 키와 키를 동시에 누르고 있는 상태에서 화

살표키를 누르면 그 화살표 방향으로 컬럼 블럭이 설정된다.

 

2. 마우스를 이용하는 방법

 

키를 누르고 있는 상태에서 마우스를 드래그한다. 그러면 마우

스가 움직이는 대로 컬럼 블럭이 설정된다.

 

 

델파이의 부활절 달걀(Easter Eggs)

──────────────────────────────────

대부분의 사람들은 자신이 이룬 업적을 다른 사람들에게 알리기를 원

한다. 소프트웨어 개발자들도 예외는 아니다. 그래서 많은 개발자들

은 자신들이 만든 프로그램에 자신들의 이름이나 사진등을 숨겨 놓고

특별한 방법을 통하여 그 숨겨진 내용을 볼 수 있게 하고 있다.

 

델파이에 숨겨진 부활절 달걀은 3가지가 있는데, 모두 델파이의

About 대화상자에 숨겨져 있다.

 

1. 베타 테스터와 볼랜드의 테스트 팀의 이름이 나온다.

이 달걀을 보기 위해서는 Help메뉴의 About를 선택하여 About대화상

자가 나오게 한다. 그리고 키를 누르고 있는 상태에서 team

이라고 타이프한다. 마지막 글자를 타이프하자마자 여러 이름들이

About 대화상자에 나올 것이다.

 

2. 델파이 개발자들의 이름이 나온다.

키를 누르고 있는 상태에서 developers 라고 타이프 한다.

 

3. 델파이의 주 설계자이며 델파이를 처음 고안한 Anders Hejlsberg

의 사진이 나온다. 이 사진은 사라지기 바로 전에 왼쪽 눈으로 윙크

하기도 한다.

키를 누르고 있는 상태에서 and 라고 타이프 한다.

 

 

펜티엄 오류 검사 프로그램 제작

──────────────────────────────────

이번에는 펜티엄 오류 검사 프로그램을 만들어 보면서 델파이의 사용

법을 익혀 보도록 하자. 대부분의 사람들이 잘 아는 바와 같이 초기

에 나온 펜티엄 프로세서에는 소수점 9번째 자리수의 계산에 오류가

있다고 한다. 그래서 CPU를 교환해주는 대 소동을 일으키기도 했었는

데, 델파이로 현재 컴퓨터의 펜티엄 CPU가 초기의 오류가 있는 CPU인

지 판별할 수 있는 간단한 프로그램을 만들어 보고자 한다. 물론 펜

티엄이 아닌 PC에서도 오류가 없다는 결과가 나올 것이다.

 

먼저 다음과 같이 폼을 작성한다.

 

┌─┬─────────────────────┬─┬─┐

│==│ Form1 │▼│▲│

├─┴─────────────────────┴─┴─┤

│ │

│ ┌────────┐ │

│ Label1 │Edit1 │ │

│ └────────┘ │

│ ┌────────┐ │

│ Label2 │Edit2 │ │

│ └────────┘ │

│ │

│ Label3 │

│ │

│ │

│ ┌─────┐ ┌─────┐ ┌─────┐ │

│ │Button1 │ │Button2 │ │Button3 │ │

│ └─────┘ └─────┘ └─────┘ │

└───────────────────────────┘

 

그리고 각각의 컴포넌트의 속성을 다음과 같이 설정하여 아래 그림과

같게 한다.

 

Form1.Caption 펜티엄 오류 검사 프로그램

 

Label1.Caption 0.000000009 * 9 / 9 =

Label2.Caption 0.000000007 * 35 / 35 =

Label3.Caption 공백

 

Edit1.Text 공백

Edit2.Text 공백

 

Button1.Caption 검사

Button1.Name TestCpu

 

Button2.Caption 청소

Button2.Name ClearLbl

 

Button3.Caption 종료

Button3.Name ExitApp

 

 

┌─┬─────────────────────┬─┬─┐

│==│ 펜티엄 오류 검사 프로그램 │▼│▲│

├─┴─────────────────────┴─┴─┤

│ │

│ ┌────────┐ │

│ 0.000000009 * 9 / 9 = │ │ │

│ └────────┘ │

│ ┌────────┐ │

│ 0.000000007 * 35 / 35 = │ │ │

│ └────────┘ │

│ │

│ │

│ │

│ │

│ ┌─────┐ ┌─────┐ ┌─────┐ │

│ │ 검사 │ │ 청소 │ │ 종료 │ │

│ └─────┘ └─────┘ └─────┘ │

└───────────────────────────┘

 

그리고 3개의 버튼 각각을 더블 클릭하여 나오는 코드 에디터에

이벤트 핸들러를 다음과 같이 작성한다.

 

* <검사> 버튼의 이벤트 핸들러

 

procedure TForm1.TestCpuClick(Sender: TObject);

var

a, b : real;

begin

a := 0.000000009 * 9 / 9

b := 0.000000007 * 35 / 35

 

Edit1.Text := FloatToStrf(a, ffFixed, 1, 9);

Edit2.Text := FloatToStrf(b, ffFixed, 1, 9);

 

if (Edit1.Text = '0.000000009') AND

(Edit2.Text = '0.000000007') then

Label3.Caption := '오류가 없는 CPU 입니다.'

else

Label3.Caption := '오류가 있는 CPU 입니다.';

 

end;

 

* <청소> 이벤트 핸들러

 

procedure TForm1.ClearLblClick(Sender: TObject);

begin

 

Edit1.Text := '';

Edit2.Text := '';

 

Label3.Caption := '';

 

end;

 

* <종료> 이벤트 핸들러

 

procedure TForm1.ExitAppClick(Sender: TObject);

begin

 

close;

 

end;

 

이제 델파이 메뉴의 Options/Project를 실행하고 Compiler페이지의

Code Generation 그룹에서 Pentium-safe FDIV 항목의 선택을 해제

한다. 해제하지 않으면 델파이가 펜티엄의 오류를 자동으로 체크

하므로 본 프로그램의 작성 의미가 없기 때문이다.

 

위와 같이 작성하고 F9를 눌러 컴파일한다. 그리고 나타난 실행화면

에서 <검사>를 클릭하면, 오류가 없는 펜티엄이나 다른 기종의 PC

에서는 다음과 같이 나타날 것이다.

 

 

┌─┬─────────────────────┬─┬─┐

│== 펜티엄 오류 검사 프로그램 │▼│▲│

├─┴─────────────────────┴─┴─┤

│ │

│ ┌────────┐ │

│ 0.000000009 * 9 / 9 = │0.000000009 │ │

│ └────────┘ │

│ ┌────────┐ │

│ 0.000000007 * 35 / 35 = │0.000000007 │ │

│ └────────┘ │

│ │

│ 오류가 없는 CPU 입니다. │

│ │

│ │

│ ┌─────┐ ┌─────┐ ┌─────┐ │

│ │ 검사 │ │ 청소 │ │ 종료 │ │

│ └─────┘ └─────┘ └─────┘ │

└───────────────────────────┘

 

그리고 이 상태에서 <청소> 버튼을 누르면 다음과 같이 될 것이다.

 

┌─┬─────────────────────┬─┬─┐

│==│ 펜티엄 오류 검사 프로그램 │▼│▲│

├─┴─────────────────────┴─┴─┤

│ │

│ ┌────────┐ │

│ 0.000000009 * 9 / 9 = │ │ │

│ └────────┘ │

│ ┌────────┐ │

│ 0.000000007 * 35 / 35 = │ │ │

│ └────────┘ │

│ │

│ │

│ │

│ │

│ ┌─────┐ ┌─────┐ ┌─────┐ │

│ │ 검사 │ │ 청소 │ │ 종료 │ │

│ └─────┘ └─────┘ └─────┘ │

└───────────────────────────┘

 

이제 <종료> 버튼을 눌러 프로그램을 종료한다.

 

그러면 위의 이벤트 핸들러 중에서 <검사> 이벤트 핸들러의 내용만

간략하고 살펴보도록 한다. <검사> 이벤트 핸들러의 내용은 다음과

같다.

 

procedure TForm1.TestCpuClick(Sender: TObject);

var

a, b : real;

begin

a := 0.000000009 * 9 / 9

b := 0.000000007 * 35 / 35

 

Edit1.Text := FloatToStrf(a, ffFixed, 1, 9);

Edit2.Text := FloatToStrf(b, ffFixed, 1, 9);

 

if (Edit1.Text = '0.000000009') AND

(Edit2.Text = '0.000000007') then

Label3.Caption := '오류가 없는 CPU 입니다.'

 

else

Label3.Caption := '오류가 있는 CPU 입니다.';

 

end;

 

 

여기서 var 부분에 a, b 변수를 real형으로 선언하였고,

소수점 9째자리의 수를 곱하기, 나누기 연산을 하여 그 값을

각각 a와 b에 대입하였다.

 

그리고 Edit1.Text와 Edit2.Text에 a와 b의 값을 대입하였는데,

a와 b는 실수이고, Edit1.Text와 Edit2.Text의 속성은 문자열

이므로 실수를 문자열로 바꾸어주는 FloatToStrf()함수를

사용하였다. 여기서 실수를 문자열로 바꾸어주는 FloatToStrf()

함수를 사용하지 않고 실수를 직접 대입하면 Type mismatch 에러가

발생한다. FloatToStrf()함수의 인자에 대하여는 델파이의 도움말

을 참고하기 바란다.

 

그리고 값이 제대로 나왔는지를 if...then 문을 사용하여 검사하고

값이 일치하면 Label3.Caption에 '오류가 없는 CUP 입니다.'라는

내용이 출력되고, 오류가 있다면, '오류가 있는 CUP 입니다.'라는

내용이 출력되게 하였다.

 

그리고 if... then else 문에서 위와 같이 ';'(세미콜론)을 사용한

다는 것을 기억하기 바란다.

 

< 계 속 >

728x90
반응형

'Delphi > Delphi란?' 카테고리의 다른 글

Delphi OOP와 C++과의 차이 [3]  (0) 2021.04.28
Delphi OOP와 C++과의 차이 [1]  (0) 2021.04.27
Delphi란...{4}  (0) 2021.04.26
Delphi란...{3}  (0) 2021.04.23
Delphi란...{2}  (0) 2021.04.23

댓글