[델파이_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; 

댓글