[델파이_Delphi] 기본 개념 -1 [프로젝트, 함수, 프로시저]
공부하면서 나중에 생각 안나면 보려고 혼자 끄적이는 기록 입니다.
델파이 기본
1. 프로젝트파일
- 프로젝트 확장자 파일은(.Dpr(ver.10~) .Dproj(ver.2009~)[MS빌드옵션정보포함 되어 있는 확장 자 이며, 그로 인하여 파일 용량이 크다]) 프로그램의 메인 으로 다른 유닛이나 폼들을 포함하는 총 연결 파일이다.
- 메인 이지만 많은 코딩은 하지 않는다
2. 프로젝트관리
- New Form을 하면 폼 파일(*.dfm)과 유니트(*.pas)파일이 추가 된다.
- 폼파일은 화면에 대한 정보(폰트, 크기, 색상 등)를 가지고 있는 이진 파일로 델파이 5.0부터 텍스트 파일로 저장된다.
- 유니트 파일은 상수,변수,타입,프로시저나 함수 등을 코딩하는 소스 이다.
- 주로 코딩하는 곳이 유니트 파일(*.pas)이며, 화면 디자인은 폼 파일(*.dfm)에 한다.
- 프로젝트 생성시 반드시 저장을 하며, 해당 프로젝트에 맞게 이름을 정해준다.
- File - Save Project As를 선택하여 프로젝트 이름을 저장 한다.
- New Unit를 선택하면 프로젝트에 새로운 유니트가 추가 된다.
- 글로벌 베리어블(Global Variable,전역변수) 또는 여러 곳에서 호출 할 수 있는 Funtion,Procedure 사용 예정 시 Unit만 추가 하여 사용 할 수도 있다.
- 각각의 유니트들은 컴파일하여 DCU(Delphi Compiled Unit,)를 만듭니다.
3. 프로젝트 매니저
- 프로젝트관리와 각 프로젝트 옵션 추가 가능하며, 프로젝트 소스 구성들을 보여주고 추가/삭제가 가능 하다.
4. Unit는 4개의 구조로 구분 된다.(순서대로).
- Interface(default)
n Type, const, var, proccdure, function 선언 하는 하는 곳
n 다른 유니트에서 이곳에 정의된 var, proccdure, function을 사용 할 수 있음
(단, uses 절에 해당 유니트를 선언해야 한다.)
n Type 선언 하는 방법
Ø Ex) interface
Type
Country – array [0..2] of string; // ‘country’ 라는 변수에 배열을 선언
// 여러 개의 속성들을 묶어 관리하는 것을 record 또는 구조체 라고 한다.
Person – record //’person’ 이라는 구조체 생성
Name : string;
Age : byte;
Address: string;
End;
P_person = ^Person; //’person’이라는 구조체에 포인트type 라고 선언
Var
P: p_person;
Ps: p_pchar; //문자열 포인터
// Pansichar, pwidechar, punicodechar 로 구분
n Var (변수 선언) : ex) s : String; (일반적으로 unicodeString 사용 현재)
Ø ver 1.0 : shortstring
Ø ver 2.0 : Ansistring
Ø ver 2009 ~ 현재 : unicoedstring
n Var (변수 선언) : ex) I ; integer(주로 사용 하는 데이터형)
Ø 크기가 정해져 있는 데이터 Type (Fundamental Type 38Page 참고)
Ø 16 bit Integer : integer / 32 bit Integer : longinteger
Ø Natibeint : 32 bit 또는 64 bit 사용시 시스템에서 자동적으로 변경 함
Ø Default 값 사용 문법 ex) I : integer = 100; // i변수에default값으로100 사용
n B :Boolean
Ø 기본적인 true / false 사용시 사용하는 변수
n Array(배열) : 연속해서 여럿 데이터를 관리 할 때 사용하는 type
Ø Ex) Country : array[0..2] of string; // 0~2 까지 문자형 배열 변수 선언
Ø Ex) county : array of string; //dynamic Array 동적 배열로 선언
Ø Ex) county : array of array string; //dynamic Array 동차 2차원 배열로 선언
n Procedure 와 function 의 대하여 설명
Ø Procedure는 리턴(반환) 값이 없음
Ø Function은 리턴 (반환) 갑이 있음
Ø 같은 이름의 함수 프로시저 금지 (단 overload 사용 시 가능)
Ø Ex) Procedure Test;
//위에서 선언된 루틴들을 구현하는 곳
//type, const, var, 선언 : 다른 유니트에서는 사용 할 수 없고 해당 유니트의 구현 부분에서만 사용 가능
Ø Ex) function add(x, y : integer) : integer;
// Interface 에 선언하는 방법
Ø Ex) function add(var x, y : integer) : integer; // call by Reference
// Interface 에 선언하는 방법
Ø Ex) function add(out x, y : integer) : integer; // out
// Interface 에 선언하는 방법
Ø Ex) function add(const x,y: integer) : integer; // 상수
// Interface 에 선언하는 방법
Ø Ex) function Divide(x,y: integer) : integer ; overload; //정수형 디비드
// 같은 명을 사용 시 overload 사용
Ø Ex) function Divide(x,y: real) : real; overload; // 실수형 디비드
// 같은 명을 사용 시 overload 사용
- Implementation(default)
n Uses //주로 interface 에 선언
n Procedure 선언 방법
Ø Procedure Text;
Var
K : integer; //초기 처리 불가
Begin
ShowMessage(‘test called’);
End;
n Function 선언 방벙
Ø Function add(x, y : integer) : integer; // interface 에있는 function 명과 변수가 동일 해야한다.
Begin
// Add := X + Y;
Result := x + y;
// exit(x+y); //2010 부터 exit(리턴값) 가능
end;
Ø Function add(var x, y : integer) : integer; // call by Reference
Begin
// Add := X + Y;
Result := x + y;
X := 20;
end;
Ø Function Divide(var x, y : integer) : integer;
// overload 사용하여 같은 명 함수 사용 가능
Begin
Result := x div y;
end;
Ø Function Divide(var x, y : real) : real; // call by Reference
// overload 사용하여 같은 명 함수 사용 가능
Begin
Result := x / y;
end;
- Initialization
n Uses 절을 만나면 실행 : 초기 처리 : 변수의 초기 값 지정, 메모리 할당
n 사용 법 (static array 방식)
Ø Ex) initialization
Begin
Countries[0] := ‘한국’;
Countries[1] := ‘미국’;
Countries[2] := ‘일본’;
// static array 방식
// 메모리 절약 안되는 방식
// 배열 변수가 [0..2]로 잡혀있는 경우 2가 넘어갈 경우 에러
End;
n 사용 법 (dynamic array 방식)
Ø Ex) initialization
Begin
Setlength(countries,2);
Countries[0] := ‘한국’;
// Dynamic array 방식
// setlength : 배열을 사용 전에 실시간으로 “countries”에 방(메모리) 2개 생성
End;
n 사용 법 (dynamic array 2차원 배열 방식)
Ø Ex) initialization
Begin
Setlength(countries,2,2);
Countries[0,0] := ‘한국’;
// Dynamic array 방식
// setlength : 배열을 사용 전에 실시간으로 “countries”에 방(메모리) 2개 생성
End;
댓글
댓글 쓰기