본문 바로가기

Delphi/문법64

델파이 포인터 (Pointer) 6편 델파이 포인터 (Pointer) 6편 기초 강좌 포인터란 무엇일까요? 포인터는 한마디로 가리킨다는 의미입니다. 쉽게 다음과 같은 예를 많이 들죠. 저도 포인터에 대한 상투적인 예를 간략히 들면 다음과 같습니다. 선생님께서 민영이네 집에 가정 방문을 가려고 합니다. 그런데 집의 위치를 잘 몰라서 민영이의 짝인 형철이에게 민 영의 집이 어딘지 물었습니다. 그러자 형철이는 '저기'라고 말하면서 손가락으로 민영의 집을 가리켰습니다. 자. 여기서 선생님은 민영의 집을 모르지만 민영의 집을 알고 있는 형철이를 알고 있습니다. 형철이는 민영의 집을 손가락으로가리키로 있는데 바로 형철이가 포인터인 셈입니다. 많은 사람들이 포인터를 이렇게 이해 시키더군요. 어쨌든 포인터의 개념은 이쯤하고 델파이에서 포인터를 사용하는 방.. 2023. 8. 10.
델파이 포인터 (Pointer) 5편 델파이 포인터 (Pointer) 5편 5. 변수의 주소 지정 변수를 어떤 특정 주소에 위치시키거나 또는 어느 주소를 특정 자료형 단위 (워드, 바이트)로 다루는 방법에 대해서 살펴보기로 한다. absolute 터보 파스칼에서는 메모리의 주소를 변수를 사용하여 선언할 때부터 지정할 수 있도록 하는 absolute 라는 예약어를 제공하고 있다. 다음의 선언문을 살펴보자. var Keyboard : Byte absolute $0000:$0417; 이와 같이 선언하면 Keyboard 라는 변수는 1바이트를 차지하는 변수로써, 그 위치는 세그먼트 $0000 에서 옵셋 $0417 에 위치하게 된다. 이 선언문은 다음과 같이 선언될 수 있다. var Keyboard : ^Byte; begin Keyboard := P.. 2023. 8. 9.
델파이 포인터 (Pointer) 4편 델파이 포인터 (Pointer) 4편 4. 포인터 관련 함수 지금까지 한 것만으로는 포인터 변수를 어디에 어떻게 쓰는지 상당히 궁금할 것이다. 포인터 변수의 실제 응용은 다음에 다루기로 하고 여기서는 일단 포인터 변수에 관련된 나머지 사항에 대해 좀 더 알아 보기로 하자. 물론 지금까지 이해한 것만으로도 동적 자료 구조를 대충 구현할 수 있지만, 이 절에서 설명하는 내용을 이해하면 프로그램을 작성할 때 도움이 많이 될 것이다. 이 절에서 설명할 내용은 좀 전문적이고 하드웨어나 어셈블리어에 대한 기초지식을 요구하므로, 필요하다면 어셈블러 서적을 참조해 가면서 보기 바란다. 1) IBM PC 의 메모리 구조 포인터 형은 메모리에 저장된 다른 자료가 있는 곳을 가리키는 형이다. 그런데 그 포인터 변수가 어디를.. 2023. 8. 8.
델파이 포인터 (Pointer) 3편 델파이 포인터 (Pointer) 3편 3. 포인터 변수에 대한 연산 포인터는 다른 변수를 가리키는 값이기 때문에, 포인터에 대한 연산은 일반 자료에 대한 연산과는 상당히 다르다. 이것을 이해하지 못하면 포인터를 이용하는 프로그램을 짤 수 없을 뿐더러 허투루 짰다가는 프로그램이 폭주하기 십상이다. 이 절에서는 포인터를 이용한 연산의 기본 개념을 잡아 보기로 한자. 포인터를 이용할 때는 항상 포인터가 가리키는 값과 포인터 그 자체를 구분하는 것이 매우 중요하다. 예를 들어 var p, q : ^Integer; 을 생각해 보자. New(p); New(q); p^ := 10; q^ := 20; 위 문장은 먼저 p 와 q 에 기억장소를 할당한다. 그런 다음 p 가 가리키는것 (p^) 에 10 을 지정하고, q 가.. 2023. 8. 7.
델파이 포인터 (Pointer) 2편 델파이 포인터 (Pointer) 2편 기억 장소의 할당과 해제 1) New 와 Dispose 첫번째에서는 포인터 변수를 선언하기만 하고 그것이 가리키는 것에 대해서는 따로 언급하지 않았다. 그래서 포인터 변수를 선언하면 자동으로 그것이 가리키는 것도 같이 생긴다고 생각하는 사람들이 있는데, 절대로 그렇지 않다. 첫번째에서 p 를 선언하고 곧장 p^ 를 썼지만, 실제로 그렇게 하면 십중팔구 시스템이 폭주할 것이다. 아까도 말했지만 포인터 변수는 다른 어떤 곳을 가리키는 값을 가진다. 포인터 변수를 처음 선언했을 때 그 값이 무엇인지 알 수 없다. 언뜻 생각하면 처음 선언했을 때 nil 이 될 것 같지만, 실제로는 어떤 값을 가지고 있으나 이보다 더욱 중요한 것은, 실제로 p 가 가리키는 것 (p^) 이 존.. 2023. 8. 4.
델파이 포인터 (Pointer) 1편 델파이 포인터 (Pointer) 1편 포인터형을 이용한 자료 구조를 흔히 동적 자료 구조하고 하는데, 이것은 정적인 자료 구조인 배열이나 레코드 등의 자료형의 크기가 컴파일 시에 이미 결정되어 할당되는데 비하여 포인터를 이용한 자료형은 프로그램의 수행 중에 크기를 바꿀 수 있기 때문에 붙여진 이름이다. 동적 자료 구조는 흔히 고급 프로그래밍 언어를 배우면서 자칫 넘지 못하는 장애물이다. 여기서는 포인터의 기본적인 개념과 간단한 응용 사례를 다룬다. 1. 포인터의 개념 1) 왜 동적인 자료 구조를 이용해야 하는가? 왜 동적인 자료 구조를 이용해야 하는가? 이에 대한 대답을 얻기 위해 리스서에 따라 늘어 놓은 것이다. 따라서 리스트는 다음과 같이 하나의 배열로 표현할 수 있을 것이다. var List : a.. 2023. 8. 3.
런타임시에 컴퍼넌트 이동,크기조절 런타임시에 컴퍼넌트 이동,크기조절 PostMessage( Panel1.Handle, WM_SYSCOMMAND, $F012, 0 ); 여기서, $F012 대신에 아래와 같은 값들을 써보세요. $F001 ; 우측 고정 리사이징 $F002 ; 좌측 고정 리사이징 $F003 ; 하단(only) 고정 리사이징 $F004 ; 우하단(only) 고정 리사이징 $F005 ; 좌하단(only) 고정 리사이징 $F006 ; 상단(only) 고정 리사이징 $F007 ; 우상단(only) 고정 리사이징 $F008 ; 좌상단(only) 고정 리사이징 $F009 ; 이동 $F012 ; 이동 2023. 6. 13.
델파이 속성(Property) 이해하기 객체 지향 프로그래밍에서의 활용과 장점 델파이 속성(Property) 이해하기 객체 지향 프로그래밍에서의 활용과 장점 델파이(Delphi)는 Object Pascal을 기반으로 한 강력한 프로그래밍 언어로, 객체 지향 프로그래밍(OOP)을 지원하는 대표적인 언어 중 하나입니다. OOP는 코드의 재사용성, 유지 보수성 및 가독성을 향상시키기 위한 강력한 개념을 제공합니다. 이 중 하나인 속성(Property)은 객체 지향 프로그래밍에서 중요한 개념으로, 이번 포스팅에서는 델파이의 속성에 대해 자세히 알아보겠습니다. 속성(property) 한 클래스에서 속성(property)은 그 클래스의 정적인 특성을 나타냅니다. 사람을 예로 든다면 이름, 키, 몸무게, 성별, 생년월일 등과 같은 것이 사람 을 나타내는 속성이 될 수 있습니다. 이 속성은 한 .. 2023. 6. 1.
열거형의 사용방법 열거형의 사용방법 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Panel1: TPanel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type { 열거형을 정의한다 } DayOfWeek = (Mon, .. 2021. 10. 8.
델파이 shl 과 shr 설명 델파이 shl 과 shr 설명 shr, shl은 논리연산자 or 비트연산자 각각 shift right, shift left 를 말한다. 011011 이라는 2진수가 있을때 shr 2 하면 000110 이렇게 오른쪽으로 두칸 쉬프트 된다. 011011 을 shl 2 하면 101100 이 된다. x shl y 에서 x를 y bit만큼 왼쪽으로 bitwise shift 한다. 이것은 곱하기와 나누기 효과를 낼 수 있는데요.. shl의 경우 x 곱하기 2의 y승 이 된다. 예를 들어.. 01101(10진수로 13)을 shl 1 했을때의 결과는 11010(10진수로 26)이 되므로 두배가 된 것을 알 수 있다. 이것은 활용하기 나름이구.. 어떤 코드로의 encode, decode할때 많이 쓰이기도 한다. 참고로 .. 2021. 6. 18.
제네릭 - 델파이 TDictionary 사용 TDictionary TDictionary 사용을 하기 위해서는 Generics.collections 라는 클래스를 먼저 User 추가를 해야 사용을 할 수 있다. TDictionary 는 사전이라고 생각하면 되고, 표제어(keys)가 있고 그 내용 설명(Values)이 있는 형식이요. 직접 테스트 소스를 보면서 확인해 보겠다. 화면에 버튼1, 버튼2 , 메모장을 올려 놓자~!! Private 에 iDictionary : TDictionary; 선을 해주쟈! 다음으로 Form 이벤트 중.... OnCreate와 OnClase 이벤트에 다음과 같이 작성해주쟈 iDictionary를 생성하고 파괴하는 코드인다. 다음으로 버튼1 OnClick 이벤트에 다음과 같이 코딩해주자 procedure TForm1.Bu.. 2021. 6. 17.
모바일 개발을 위한 델파이 언어 -4- 델파이 XE4 버전에서는 iOS 및 ARM 컴파일러 지원을 위해, 기존의 델파이와는 다른 새로운 델파이 컴파일러를 도입했습니다. 기존 델파이 컴파일러와의 호환성을 위해 대부분의 문법들은 하위호환되지만 델파이로 모바일 개발을 하기 위해서는 알아두어야 할 주의해야 할 부분들이 상당히 많습니다. 현재 엠바카데로에서 델파이 프로덕트 매니저를 맡고 있는 마르코 칸투는 문서 "The Delphi Language for Mobile Development"에서 이러한 주의점들을 간략히 설명하고 있습니다. 모바일 개발을 생각하는 델파이 개발자들에게는 아주 중요한 문서이므로, 총 4회로 나누어 이 문서를 번역해서 올립니다. 이번 글은 그중 마지막, 네번째입니다. 기타 언어 변경들 문자열 타입 변경과 객체 메모리 관리 외에.. 2021. 6. 16.
모바일 개발을 위한 델파이 언어 -3- 모바일 개발을 위한 델파이 언어 -3- 델파이 XE4 버전에서는 iOS 및 ARM 컴파일러 지원을 위해, 기존의 델파이와는 다른 새로운 델파이 컴파일러를 도입했습니다. 기존 델파이 컴파일러와의 호환성을 위해 대부분의 문법들은 하위호환되지만 델파이로 모바일 개발을 하기 위해서는 알아두어야 할 주의해야 할 부분들이 상당히 많습니다. 현재 엠바카데로에서 델파이 프로덕트 매니저를 맡고 있는 마르코 칸투는 문서 "The Delphi Language for Mobile Development"에서 이러한 주의점들을 간략히 설명하고 있습니다. 모바일 개발을 생각하는 델파이 개발자들에게는 아주 중요한 문서이므로, 총 4회로 나누어 이 문서를 번역해서 올립니다. 이번 글은 그중 세번째입니다. 3. ARC: 자동 참조 카운.. 2021. 6. 15.
모바일 개발을 위한 델파이 언어 -2- 모바일 개발을 위한 델파이 언어 -2- 델파이 XE4 버전에서는 iOS 및 ARM 컴파일러 지원을 위해, 기존의 델파이와는 다른 새로운 델파이 컴파일러를 도입했습니다. 기존 델파이 컴파일러와의 호환성을 위해 대부분의 문법들은 하위호환되지만 델파이로 모바일 개발을 하기 위해서는 알아두어야 할 주의해야 할 부분들이 상당히 많습니다. 현재 엠바카데로에서 델파이 프로덕트 매니저를 맡고 있는 마르코 칸투는 문서 "The Delphi Language for Mobile Development"에서 이러한 주의점들을 간략히 설명하고 있습니다. 모바일 개발을 생각하는 델파이 개발자들에게는 아주 중요한 문서이므로, 총 4회로 나누어 이 문서를 번역해서 올립니다. 이번 글은 그중 두번째입니다. 2. 문자열 타입 문자열의 관.. 2021. 6. 14.
모바일 개발을 위한 델파이 언어 모바일 개발을 위한 델파이 언어 델파이 XE4 버전에서는 iOS 및 ARM 컴파일러 지원을 위해, 기존의 델파이와는 다른 새로운 델파이 컴파일러를 도입했습니다. 기존 델파이 컴파일러와의 호환성을 위해 대부분의 문법들은 하위호환되지만 델파이로 모바일 개발을 하기 위해서는 알아두어야 할 주의해야 할 부분들이 상당히 많습니다. 현재 엠바카데로에서 델파이 프로덕트 매니저를 맡고 있는 마르코 칸투는 문서 "The Delphi Language for Mobile Development"에서 이러한 주의점들을 간략히 설명하고 있습니다. 모바일 개발을 생각하는 델파이 개발자들에게는 아주 중요한 문서이므로, 총 4회로 나누어 이 문서를 번역해서 올립니다. 이번 글은 그 중 첫번째입니다. ​모바일 개발을 위한 델파이 언어 .. 2021. 6. 11.
유한 루테인지아잔틴 캐시워크 돈버는퀴즈 정답은? 'ㅇㅇmg' 유한 루테인지아잔틴 캐시워크 돈버는퀴즈 정답은? 'ㅇㅇmg' [퀴즈] 유한 루테인 지아잔틴은 식약처 1일 권장 최대함량인 ㅇㅇmg이 함유되어 있다. ㅇㅇ에 들어갈 숫자는? 정답 '20' 2021. 6. 10.
델파이 집합, 열거형, 열거형루프, 객체형 델파이 집합, 열거형, 열거형루프, 객체형 델파이 집합, 열거형, 객체형 집합 - 여러개의 원소를 가질수 있고, 교집합/차집합 등의 연산을 할 수 있습니다. 원소를 표현할때는 '[' ']'기호를 이용합니다. type TMYEdges = set of ( deLeft, deTop, deRight, deBottom); var Edges: TMyEdges; begin Edges := [deLeft, deTop]; Edgeg := [deLeft, deTop] - [deLeft, deRight]; // = [deLeft] end; 열거형 : 개체 중에서 단 하나의 값만 가질 수 있습니다 type TMyEdgeStyle = ( desNone, desFlat, desRaised, desRaisedHeavy, desSu.. 2021. 6. 10.
객체지향 언어로서의 오브젝트 파스칼 -마지막편- 객체지향 언어로서의 오브젝트 파스칼 마지막편 ■상속성과 델파이 폼 새로운 프로젝트를 생성하면, 델파이는 새로운 폼을 보여준다. 코드 에디터의 새로운 프로젝트의 내용을 살펴 보면, 델파이가 폼에 대한 새로운 객체 클래스를 선언하고 새로운 폼 객체를 생성하는 코드를 만들어 낸다는 것을 알 수 있다. 그러면 초기에 생성되는 델파이의 코드를 살펴 보자. unit Unit1; interface uses Windows, Classes, Graphics, Forms, Controls, ... ; type TForm1 = class(TForm) {폼에 대한 새로운 클래스 선언} private { Private declarations } public { Public declarations } end; {클래스 선언부는 .. 2021. 6. 9.
객체지향 언어로서의 오브젝트 파스칼 3편 객체지향 언어로서의 오브젝트 파스칼 3편 ■ 메소드와 생성자(constructor), 파괴자(destructor)의 추가 이제 TPerson 클래스에 몇가지 메소드를 추가해서 조금은 쓸모가 있는 클래스로 만들어 보자. 현재 가지고 있는 Name 필드는 그대로 두고, ID 필드 대신, 주민등록번호를 저장할 수 있는 RegID 필드를 만들자. 이때 필드 임을 나타내기 위해 각 필드의 앞에 접두어로 ‘F’를 붙이도록 한다. 그리고, 주민등록번호 필드 값을 가지고 이 값이 유효한지 알아보는 IsValid 함수와 나이와 성별을 알 수 있는 GetAge, GetSex 라는 함수를 추가한다. 또한, 이 클래스의 객체가 생성될 때 값을 초기화 시키기 위해 생성자를 추가하자. 생성자(constructor)는 특별한 형태.. 2021. 6. 8.
대웅제약 밀크씨슬 에너씨슬 캐시워크 돈버는퀴즈 정답은? 'ㅇㄴㅆㅅ' 대웅제약 밀크씨슬 에너씨슬 캐시워크 돈버는퀴즈 정답은? 'ㅇㄴㅆㅅ' [퀴즈] 대웅제약의 밀크씨슬인 에너씨슬 5종은 간건강은 물론 장건강, 눈건강, 에너지생성, 콜레스테롤 케어까지 건강 ㅇㅇ별로 선택해 먹을 수 있는 맞춤형 제품입니다. 초성힌트 : ㄱㅁ 정답 '고민' [퀴즈] 고민별로 골라먹을 수 있는 대웅제약 밀크씨슬, 에너씨슬은 간건강관리 외에 비타민B, 루테인, 유산균이 한알에 담겨있어 ㅇㅇ ㅇ ㅇㅇ 케어가 가능합니다. 초성힌트 : ㅁㅊㄱㄱㄱ 정답 '맞춤간건강' [퀴즈] 대웅제약 건강기능식품에서 출시한 고민별로 선택해 먹을 수 있는 밀크씨슬 6종 라인업의 공통된 이름은 ㅇㅇㅇㅇ 입니다. 초성힌트 : ㅇㄴㅆㅅ 정답 '에너씨슬' 2021. 6. 7.