2013년 3월 27일 수요일

델파이 10장, 11장

10장 보고서 작성


즉, 결과물을 인쇄하는 것인데. 현재 내가 쓰고 있는 XE3 버전에는 Fast  Report 밖에 없다.

사용법은 매우 간단하다.

DB와 테이블을 연결하고 위치만 잡아주면 끝이다.

책이 워낙 대충 설명해놔서 실습하는데 애 먹었지만 익히는데는 금방이었다.

인쇄물 틀잡는 것만 좀 해놓으면 계속 써먹을 수 있다는 장점도 있다.

책과 내가 가지고 있는 툴이 버전이 틀린 관계로 애를 먹고 있다.

허리도 아프고, 시간도 촉박하고 델파이 공부 얼렁 끝내고 싶다 진짜 ㅡㅡ

11장 DLL 작성과 호출


DLL 은 다른 응용 프로그램에서 사용되는 코드나 자원을 포함하는 컴파일된 모듈이다.

한마디로 말하자면 공통으로 쓰는 부분을 합쳐서 공유하게 하자는 거다.

 1.DLL 사용시 장점

  • 응용프로그램의 재 컴파일 없이 DLL을 변경하거나 프로시저 및 함수를 추가 할 수 있다.
  • 여러 개의 응용프로그램에서 사용되는 DLL은 단일 복사본이 메모리에 올라가므로 응용 프로그램의 크기는 작아지고 메모리 사용량도 작아짐
  • DLL은 다른 언어간의 호환을 제공함. 
2.DLL 작성법

  1. File -> New -> Other에서 DLL(Dynamic_link Library)용 프로젝트를 선택
  2. DLL을 작성하기 위한 새로운 프로젝트를 생성
  3. 프로그램 작성
  4. DLL 생성하기 위해 Project->Build All을 실행하면 dll이 생성된다.
3. DLL 호출
DLL을 호출하는 방법은 3가지가 있다.

  • 정적으로 가져오기
프로그램 가동시 미리 라이브러리를 로드하여 해당 프로시저나 함수를 호출하는 방법으로 메모리 효율면에서는 좋지 않음

  • 동적으로 가져오기
필요한 시점에서 라이브러리를 로드하여 해당 함수나 프로시저를 호출하고 라이브러리를 해제함
메모리 사용면에서는 효과적이나 자주 사용하는 라이브러리인 경우는 정적 로딩이 효과적일수 있음

  • 지연 방식으로 가져오기
정적 로딩과 동적 로딩의 절충형으로 델파이 2010에 추가된 기능이며 라이브러리를 미리 선언해 놓지만 호출 시에 로드하고 프로그램 종요시에 해제함


4. DLL 호출 시 주의 사항

  • 정적 로딩의 경우 라이브러리와 호출하는 응용프로그램의 경로가 다른 경우, 라이브러리의 패스를 명시해야 함
  • 정적 라이브러리인 경우 하나의 라이브러리에서 여러 개의 프로시저나 함수를 사용한다고 해도 라이브러리의 이름과 함수을 쌍으로 명시해야 함
  • 프로시저나 함수 이름은 대소문자 구분을 합니다
  • 프로시저나 함수 호출 시, 특히 언어가 다른 경우 매치되는 정확한 타입을 주어야 함


2013년 3월 22일 금요일

델파이 9장

1. Exception 처리


에러처리는 사용자들에게 덜 빡치게(?) 해주는 아주 중요한 것이다.

에러가 났을 때 고객 지원 전번을 띄어주는 업체와

걍 아무런 메세지 없이 종료되는 업체는 고객들에게 많은 생각을 가지게 해줄 것이다.

델파이에서 제공해주는 기본 에러 처리 개체 종류는

입출력/힙/정수 일치/부동 소수정 일치/타입 캐스팅/
변환/하드웨어/데이터베이스/문자와 리스트

등의 에러처리를 제공해 준다.

에러처리 블록의 기본 구문이다.

try .... finally블록

try
   statement1;
   statement2;
finally
   statement3;
   statement4;
end;

  • 오류가 발생하지 않으면 모든 문장들이 순차적으로 실행
  • 오류가 발생했을 경우에는 바로 finally 부분의 코드로 이동하여 실행
  • 오류가 발생하던 하지 않던 finally 부분은 항상 실행
  • 주로 이 블록은 개체, 파일, 윈도우 자원 등을 보호하기 위해 구현
-------------------------------------------------------------------------------
try...except 블록

try
   statement1;
   statement2;
except
   On e:Exception Type1 Do
      statement3;
   On e:Exception Type2 Do
      statement4;
end;

  • 오류 발생 없이 코드가 수행될 경우에는 Except 문의 코드는 실행되지 않음
  • 오류가 발생하면 Except 부분으로 옮겨져서 수행
  • 오류 개체가 try...except 블록으로 들어와 처리되면 시스템은 더이상 오류 상황을 보지 않고 정상적으로 처리 함
  • 특정 타입의 Excpetion 개체를 검색하기 위하여 On... Do문을 사용할 수 있으며 그 개체의 인스턴스를 사용하기 위한 임의의 변수 e를 사용할 수 있음
  • Exception 개체는 이 변수를 통해 해당 개체의 속성과 메소드에 접근할 수 있음
  • On...Do문의 어떤 것도 현재 Excpetion에 적용되지 않으면 else 부분을 제공하여 실행하도록 할 수 있음. 
  • 만일 else 부분이 제공되지 않으면 계속 바깥쪽의 try 문을 계단식으로 찾아감
  • try...except 나 try...finally 블록은 블록 내에 중첩하여 사용할 수 있음

2. Raise


오류 조건을 표시하기 위해 예약어 Raise를 사용하여 일부러 에러를 유발 시킬 수 있다.
에러를 일부러 유발시키는 경우는 주로 입력 체크나 조건 체크에 사용한다.
예) 패스워드가 3회 이상 틀렸을 때.

사용법
Raise Exception.Create('입력 오류');

3. EAbort Exception


델파이에는 조용한 에러처리로 불리는 특별한 Exception 클래스가 있다.
이를 Silent Exception이 발생했다고 한다.
Exception과 방식은 동일하지만 대화 상자가 나타나지 않는다.

Raise EAbort Create('보이지 않는 메세지');


내용은 더 있는데.........
쓰기가 힘들다 ㅡㅡ;; 감기도 걸리고 허리도 아프고 ㅠㅠ
아아 오랜만에 맘먹고 공부하는데 태클이 ㅠㅠ

델파이 8장

8장은 필드 에디터 이다.

1. 필드 개체

델파이는 db 테이블의 각 필드 타입과 크기에 맞는 독립적인 하나의 필드 개체들을 자동으로 만들어 준다.
이런 필드 개체는 실행되는 동안에만 사용할 수 있지만 디자인 타임에도 필드 에디터를 이용하여 필드 개체를 만들 수 있다.
필드에 대해서 제어하는 것이 필드 에디터 이다.

하........... 델파이 버그가 너무 심하다.......

예제 소스에 있는 것을 그대로 컴파일하고 실행 시켰는데.

에러가 생기더니 마우스가 서버린다.

뭐 이런게 다 있지?? 내가 델파이를 공부하긴 하지만 정말 버그도 많고 개판이다.

진짜 취업만 아니면 때려치고 싶은 델파이다.

어쩌면 이글을 마지막으로 델파이는 않쓸지도 모르겠다....

델파이 공부 끝나면 그 때나 다시 요약해서 올리겠다.

끝~

델파이 7장

7장은 BDE를 사용한 데이터베이스 프로그래밍 이다.
분량이 꽤 길고 오류도 많고, 내가 몸상태도 영 시원찮아서 이제야 마치고 쓴다 ㅡㅡ;;
프로그램 개발 과정은 너무 기니 패스하고 요약만 하겠다

소스코드 링크가 없어졌다 ㅡ.ㅡ;;; 이건 찾으면 다시 업뎃하겠다....;;;
그나마 소스코드 다운 받아놔서 다행이넹~

이건 뭐 내용이 너무 기니 책을 보고, 그대로 따라하며 배우라고 밖에 할 수 없다 ㅡㅡ;;

간단한 프로그램을 만들어보니 DB 연결도 몹시 쉽고 (DB목록에서 선택만 하면 된다.)

쿼리문을 변수에 넣어서 처리하는 방식이다 보니

쿼리문이 바뀌면 바뀌는 쿼리문만 바꿔서 넣어서 하면 되기에 프로그램을 많이 수정할 필요가 없다.

물론 소스코드에 쿼리문을 직접 넣는 개발자는 하수다 -_-

책에는 엑셀 컴포넌트가 있지만 내가 설치한 xe3에는

엑셀관련 컴포넌트가 없어서 해보질 못해서 좀 아쉬웠다.

아주 조금이지만 DB를 이용한 프로그램을 만들어 봤다~





2013년 3월 19일 화요일

델파이 6장

데이터베이스 프로그래밍 개요.


1. 데이터베이스란?

방대한 양의 데이터 저장, 관리 및 사용을 위한 시스템,
데이터 베이스는 한개 이상의 테이블로 구성되어 있음.
테이블은 행과 열로 구성되는 2차원 구조의 집합체 입니다.
데이터베이스에서는 행을 레코드, 열을 필드라고 함.

레코드는 정보를 표현하는 기본 단위로서 관련 있는
여러 필드가 모여서 하나의 레코드를 구성함
레코드와 필드를 합친 것을 테이블이라고 하고,
이 테이블을 모아 놓은 자료가 데이터베이스

데이터 베이스는 로컬 데이터베이스/리모트 데이터베이스 2가지가 있음.
로컬 데이터베이스는 개인 또는 복수 사용자를 위한 것이고
리모트 데이터베이스는 다중 사용자를 위한 것

2. 데이터베이스에서 사용되는 용어들


  • Primary Key

한 레코드를 다른 레코드와 구별해주는 컬럼이나 필드를 기본키라고 한다.
기본키가 되기 위해서는 각 레코드에 대해 유일한 값이어야 하고 NULL 값이 아니어야 함

  • Foreign Key
다른 테이블과 연결하기 위하여 사용되는 키를 의미한다. 한 테이블에서 기본키가 되는 필드가 다른 테이블의 참조키로 사용될 수 있음.

  • 인덱스
테이블에 대한 보다 빠른 접근이나 효과적인 정렬 작업을 위해 테이블 내의 필드 값들을 기본적으로 하여 물리적으로 만들어 두는 것.
모든 기본키는 인덱스로 생성되어 있음.

  • 트랜젝션
여러개의 데이터베이스 연산들을 하나로 묶는 것을 의미하며 묶인 모든 연산들이 제대로 실행되면 데이터데이스에 변경된 내용기 기록되고(Commit), 한 연산이라도 실패하면 원래대로 돌아감(RollBack).

  • 저장프로시저
저장 프로시저는 여러분 수행될 필요가 있는 데이터베이스 연산들을 프로시저 형태로 미리 데이터베이스에 컴파일하여 저장해 두는 것, 데이터베이스에 따라 작성하는 방법이 다름

3. SQL이란?

데이터베이스의 자료를 이용하거나 데이터베이스에 테이블을 생성하고, 생성된 테이블에 데이터를 저장하기 위해 SQL을 사용함.
델파이에서는 어떠한 데이터베이스에서도 사용할 수 있는 표준 SQL을 사용함

4. 델파이와 데이터베이스 연결 유형

로컬 구조 (Single-tiered)
클라이언트/서버구조

1. BDE를 이용한 연결 
 2. ADO를 이용한 연결
 3. DBExpress를 이용한 연결
분산구조
1. BDE를 이용한 멀티-티어구조
 2. ADO를 이용한 멀티-구조

3. DBExpress를 이용한 멀티-티어구조

보면 별로 바뀐 부분이 없다 ㅡ.ㅡ;;
내일부터는 본격적으로 DB를 이용해서 프로그램을 만들어 보자~

2013년 3월 17일 일요일

델파이 5장

5장은 디버깅 사용하기 다.

디버깅이란?
소스 코드를 잘못 작성하여 프로그램의 실행 중에 발생하는 에러들을 찾아내고 바로 잡는 일

1. 디버그 정보 설정

Tools 메뉴에서 Options을 선택한 후 Debugger Option을 선택하면 아래와 같은 옵션들이 표시된다.
-디버그 정보를 프로젝트 별로 이용하려면 Project->Options->Compiler를 선탤하여 디버그 정보를 포함하도록 설정
-디버그를 활성화 하려면 Debugging Option에서 Integrated debugging에 체크

2. 기본적인 디버깅 방법

-프로그램 실행 중 오류가 의심스러운 부분의 실행을 중단하기 위해 Break Point를 설정
-설정방법
1.Break Point를 생성하기 원하는 문장의 왼쪽 끝을 커서를 놓고 클릭, 또는 f5 키를 누름
2. Run -> Add Breakpoint 메뉴를 이용하여 Break point를 편집

Watch 설정
어떤 변수 값의 변화를 살표보기 위해 지정하는 것.
Run -> Add Watch 메뉴를 선택하면 확인하고 싶은 변수들을 지정할 수 있음.

디버깅은 경험이기 때문에 여기에 쓰기엔 부족하다

다음에는 파트 2로 넘어가는데.
파트 2는 데이터베이스를 이용한 프로그래밍 하기다.
4장,5장은 짧아서 걍 하루에 다 썼다 ㅡ.ㅡ;
자격증 공부를 더 할 수 있을 듯~


델파이 4장

델파이 4장 제목은 컴포넌트 라이브러리와 패키지다.


1. 컴포넌트 라이브러리


계층 구조는 아래와 같다.
1.TObject
델파이의 모든 VCL 클래스들은 TObject 클래스로부터 상속됩니다. 모든 클래스의 공통적인 특성과 기능들을 가지고 있음.

2. TPersistent
저장과 읽기를 담당하는 클래스다.
이 클래스는 상속받은 모든 클래스들을 자신의 상태 정보를 필요할 때 마다 저장하고 다시 불러올 수 있게 됩니다.

3. TComponent
-툴 팔레트에 설치되는 기능
-디자인 타임에 마우스를 이용하여 폼에 추가되는 기능
-오브젝트 인스펙터를 통해 속성이 설정되는 기능

4. TControl
모든 시각적인 컴포넌트들의 선조 클래스

5. TGraphicControl
시각적인 컴포넌트이기는 하지만 입력 포커스를 받지 못하는 컴포넌트의 선조 클래스.
예)TImage, TLabel 등

6. TWincontrol
입력 포커를를 받을 수 있는 선조 클래스
예)TEdit, TCombobox 등

7. Exception
에러 상황들마다 클래스를 미리 정의해 놓고 구조적으로 에러 처리를 할 수 있게 해줌.
예외 클래스의 가장 선조가 되는 클래스
--------------------------------------------------------------------------------

2. 패키지란?

패키지는 델파이의 IDE와 델파이로 만드는 프로그램들이 공통적으로 사용할 수 있는 일종의 특화된 DLL이다.
DLL이란 공통적으로 사용되는 어떤 특정 기능들 만을 컴파일 해둔 것.
패키지란 텔파이에 맞게 컴파일된 DLL 이다.
패키지는 DLL과 유사하지만 다른점도 있다.
DLL은 실행했을 경우에만 사용할 수 있지만 패키지는 디자인 타임에도 사용할 수 있다.

- 런타임 패키지:어플리케이션을 실행할 때 기능을 제공하는 패키지
- 디자인 타임 패키지:컴포넌트를 만들거나 IDE에 컴포넌트를 설치할 때 사용하는 패키지


패키지 사용시 장점

  • 런타임 패키지는 응용프로그램 내의 코드의 중복을 제거하므로 프로그램 사이즈가 감소
  • 시스템 리소스와 하드 공간을 절약할 수 있음
  • 패키지를 이용하면 공통 코드는 빼고 프로그램을 컴파일 하기 때문에 보다 빨리 컴파일 할 수 있음
  • 디자인 타임 패키지는 컴포넌트를 배포하고 설치하는 일을 산순화 해줌