310 likes | 717 Views
델파이 기본 문법. 오브젝트 파스칼 언어 1. 주석문 { … } 또는 (* … *) 괄호 안에 있는 내용들을 주석으로 간주 // 한 줄 주석 할당 연산자 (:=) a := 100; str := ‘ hello ’ ;. 오브젝트 파스칼 언어 1. 문장 작성법 모든 코드는 세미콜론으로 분리 (;) begin .. end; 사이에 코드 작성 unit 의 마지막 end 뒤에는 .( 점 ) 으로 unit 의 끝을 알림 . end.
E N D
오브젝트 파스칼 언어 1 • 주석문 • { … } 또는 (* … *) • 괄호 안에 있는 내용들을 주석으로 간주 • // • 한 줄 주석 • 할당 연산자(:=) • a := 100; • str := ‘hello’;
오브젝트 파스칼 언어 1 • 문장 작성법 • 모든 코드는 세미콜론으로 분리(;) • begin .. end; 사이에 코드 작성 • unit 의 마지막 end 뒤에는 .(점) 으로 unit의 끝을 알림. • end. procedure TForm1.Button1Click(Sender: TObject); begin showmessage('델파이'); end; end.
오브젝트 파스칼 언어 1 • 변수 • 변수선언 형식 • var 변수명 1, 변수명2, …: 변수의 자료형 • 변수 명명 규칙 • 255자 이하 • 영어 알파벳이나 숫자, 밑줄만 사용가능 (대소구별 없음) • 첫자는 반드시 문자이어야 함. • 예약어 사용 불가능. (ex. int, for 등등) • var • x, y : integer; • MyBook (o) MyBook@ (X)
오브젝트 파스칼 언어 1 –자료형 • 자료형의 종류 ▶기본적인 자료형(Primary Data types) Boolean(논리형), integer(정수형), single(단정도부동소수점수:실수형) string(문자열형), pchar(문자열포인터형) ▶사용자 정의 자료형(User –Defined Types) 배열(Array)형, 집합형(Set Type) 레코드(Recoder)형, 부범위(Subranges)형 열거형(Enumeration), 포인터(Point)형
오브젝트 파스칼 언어 1 –문자형 • 문자형(AnsiChar 형, WideChar 형) • AnsiChar 형 • 1바이트 • 아스키문자 하나 저장 • 보통char 형으로 지정시 AnsiChar 형으로 지정됨 • WideChar 형 • 2바이트 • 유니코드 문자 저장 var c1, c2 : char; begin c1 := ‘a’; c2 := ‘b’; end
오브젝트 파스칼 언어 1 –문자열형 • 문자열형(string) • 연속 문자들의 집합 • 단일 따옴표로 지정 • 문자열 연결시에 “+”기호 사용 var str : string; begin str := ‘Hello’; end var str1, str2 : string; begin str1 :=‘Hello’; str2 := str1 + ‘반가워요’; end
오브젝트 파스칼 언어 1 – pchar • 포인터 문자열형(pchar) • Null 종료 문자열과 호환위해 사용하는 것으로 문자열에 대한 포인터를 말함. var P: PChar; Begin P:= ‘Korea25'; {P는 ‘Korea25'란 Null종료 문자열의 메모리 영역을 가리킵니다.} showmessage(p);end;
오브젝트 파스칼 언어 1 – pchar Const //상수정의 TempString: Array[0..8] of Char = ‘Hello'#0; //#0은 Null을 의미var P: PChar; Begin P:= @TempString;//TempString의 주소를 P에 할당 ShowMessage( p ); //‘Hello'란 단어를 표시
오브젝트 파스칼 언어 1 –정적배열 • 배열 선언형식 -1 • array [<인덱스>] of <요소타입> • 인덱스 초기값은 임의 지정 가능 var Myarray : array[0..5] of char; //인덱스가 0에서 5까지인1차원 배열 begin Myarray[0]:=‘A’; … end MyArray[0] … MyArray[5] var Myarray : array[2..5] of integer;//인덱스가 2에서 5까지인 1차원 배열 begin Myarray[2]:=55; … end
오브젝트 파스칼 언어 1 –정적배열 • 배열 선언형식-2 • Type 문에서 배열타입을 선언한 후, var 문에서 실제 사용할 배열을 생성하여 사용함 • 사용예 • type • Ttable = array[0..2,0..2] of double; • //Ttable 형의 배열타입을 선언. • //사용자정의자료형을 만드는 것임 • var • MyTable : Ttable; //Ttable 형의 배열을 생성함
오브젝트 파스칼 언어 1 –정적배열 • 다배열 선언형식 • array [<인덱스1, 인덱스2, ..>] of <요소타입> • MyArray : array[0..2, 0..1] of char; MyArray 배열은 3행 2열의 2차원배열이다. • 사용예 MyArray [1,2] := ‘a’; • 배열 인덱스의 하한값과 상한값을 알아내는 함수 • LOW(배열명) : 배열 인덱스의 하한값을 반환 • HIGH(배열명) : 배열 인덱스의 상한값을 반환 사용예 for n:=Low(MyArray) to High(MyArray) do
오브젝트 파스칼 언어 1 –정적배열예제 var MyArray : array[0..5] of integer; //정적배열선언 i : integer; Begin for i:=0 to High(MyArray) do //배열인덱스크기만큼 for문 수행 begin MyArray[i]:=i+10; //배열 각 방에 i + 10 의 값을 넣음 memo1.lines.add(inttostr(MyArray[i])); //메모컨트롤에 배열방에 할당된 값을 추가함. end; end;
오브젝트 파스칼 언어 1 –동적배열 • 동적배열 • 고정된 크기를 가지고 있지 않은 배열 • 배열의 크기는 런타임시에 정하게 됨. • SetLength 함수 이용 • 배열의 크기는 계속 필요할때마다 변경할 수 있다. • 정적 배열보다 훨씬 유연성이 있다.
오브젝트 파스칼 언어 1 –동적배열 • 동적배열 선언형식 • array of <요소타입> //범위지정을 하지 않음 • setLength() 함수로 런타임시에 배열에 메모리를 할당하게 된다. • 동적할당 해제 • 배열명 := nil; 또는 Finalize(배열명); var MyDynamicArray : array of char; //동적배열선언 begin setLength(MyDynamicArray,5); //0부터 4까지의 총 5개의 인덱스를 가지는 배열이 된다 //동적배열의 인덱스는 항상 0부터 시작한다. end
오브젝트 파스칼 언어 1 –동적배열 • 동적배열 예제 procedure TForm1.Button1Click(Sender: TObject); var ar : array of string; //동적배열선언 begin setLength(ar,2); //배열크기 지정 ar[0] := edit1.Text ; //배열값 할당 ar[1] := edit2.Text ; label1.Caption:= '이름=>'+ ar[0] + ' 주소=> ' +ar[1]; end;
오브젝트 파스칼 언어 1 –변수범위 • 변수의 적용범위 * 지역변수(Grobal Variables) - 하나의 이벤트 핸들러(프로시저) 또는 함수안에서 선언된 변수 (핸들러의 시작과 begin 사이에 선언) - 사용범위 : 선언된 프로시저나 함수내. - 생명 : 선언된 프로시저나 함수가 끝날때 * 전역변수(Global Variables) - 프로시저와 함수밖에서 선언된 변수(interface 부분 또는 implementation 바로 전의 var 섹션에서 선언) - 사용범위 : 선언된 유닛파일 전체. - 생명 : 선언된 유닛파일이 끝날때.
오브젝트 파스칼 언어 1 –변수범위 << 지역변수 >> 각 이벤트 핸들러내에서 선언된 변수 procedure TForm1.Button1Click(Sender: TObject); var y : integer;//TForm1.Button1Click 프로시저 안에서 선언이므로 // 지역변수이다 begin y:=strtoint(edit2.Text); << 전역변수 >> implementation 전에 선언된 변수 var Form1: TForm1; gVar : integer; //implementation 위에서 선언되었으므로 전역 변수이다 implementation {$R *.dfm}
지역/전역변수 사용예제 • 버튼을 클릭한 횟수를 출력하는 코딩을 완성하시오. • 클릭횟수를 체크할 변수 count 를 전역변수로 선언 • Count 변수의 초기값은 폼이 생성될때 할당함 • 버튼을 클릭할때 마다 count 변수의 값이 1씩 증가하고, 그 값을 라벨에 출력한다.
지역/전역변수 사용예제 procedure TForm2.Button1Click(Sender: TObject); //지역변수 사용예제 Var lo_count : integer; begin lo_count:=0; inc(lo_count); label1.Caption := '클릭횟수=>'+ inttostr(lo_count); end; procedure TForm2.Button2Click(Sender: TObject); //전역변수 사용예제 begin inc(go_count); label2.Caption := '클릭횟수=>'+ inttostr(go_count); end; procedure TForm2.FormActivate(Sender: TObject); begin go_count:=0; //전역변수 초기화 end;
오브젝트 파스칼 언어 1 –상수선언 • 상수 • 선언 형식 const [상수명] = [값]; • 상수명은 대문자 표기 권장 • 선언 위치는 사용범위에 따라 변수의 범위와 동일함. • 예제 const PI = 3.14159;// PI 상수 선언
오브젝트 파스칼 언어 1 –형변환 • 형변환 (p.100) • 하나의 자료형을 다른 자료형으로 변환하는 것 • 형 변환을 위해서 형 변환 함수들을 사용한다. • IntToStr(), StrToInt() //정수 > 문자 • StrToFloat(), FloatToStr() //실수 > 문자 • StrToCurr(), CurrToStr(), //크런트형 > 문자 • stringToWidechar() // ansi형의 char를 wide형으로 변환
형변환 예제(입력받은 두수의 나누기 출력) procedure TForm1.Button1Click(Sender: TObject); var n1, n2 : integer; dap : real; begin n1 :=strtoint(edit1.Text ); n2 :=strtoint(edit2.Text ); dap := (n1 + n2)/2; label1.Caption := floattostr(dap); label1.Font.Size :=15; label1.Font.Style := [fsitalic]; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then // edit2.SetFocus; end; end. 원하는 소수점자리로 출력하고자 할때 label1.Caption := format(‘%5.2f’,[dap]);
오브젝트 파스칼 언어 1 –연산자 • 연산자 (p.101)
오브젝트 파스칼 언어 1 –연산자 • 산술 연산자 (p.102) • 나눗셈 연산자 • / 연산결과가 실수형으로 나옴 • div 연산결과가 항상 정수형으로 나옴 var I : integer; r : real; begin I := 10 div 3; //결과 3 r := 10/3; //결과 3.33333 end;
계산기 프로그램 Standard의 Panel 객체
계산기 프로그램 • ‘+’버튼을 위한 코딩
계산기 프로그램 • MOD나 DIV를 위한 연산시 • 각각의 변수 => 정수형 integer • strtoint • Inttostr 함수 사용