본문 바로가기

delphi481

델파이 자주사용되는 함수/프로시저 델파이 자주사용되는 함수/프로시저 2021. 6. 21.
델파이 messagedlg 세가지버튼 처리 델파이 messagedlg 세가지버튼 처리 var buttonSelected : Integer; begin // Show a custom dialog buttonSelected := messagedlg('Custom dialog',mtCustom, [mbYes,mbAll,mbCancel], 0); // Show the button type selected if buttonSelected = mrYes then ShowMessage('Yes pressed'); if buttonSelected = mrAll then ShowMessage('All pressed'); if buttonSelected = mrCancel then ShowMessage('Cancel pressed'); 2021. 6. 21.
델파이 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.
모바일 개발을 위한 델파이 언어 -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.
델파이 집합, 열거형, 열거형루프, 객체형 델파이 집합, 열거형, 열거형루프, 객체형 델파이 집합, 열거형, 객체형 집합 - 여러개의 원소를 가질수 있고, 교집합/차집합 등의 연산을 할 수 있습니다. 원소를 표현할때는 '[' ']'기호를 이용합니다. 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.
객체지향 언어로서의 오브젝트 파스칼 2편 객체지향 언어로서의 오브젝트 파스칼 2편 클래스와 객체 (Classes and Objects) ■ 델파이 OOP에 대한 문법적인 고찰 구체적인 예제에 들어가기 전에, 델파이의 OOP에서 나오게 되는 중요한 개념들과 문법적인 특징에 대해서 알아보도록 하자. 1. 필드 (Fields) 필드는 객체에 속해있는 일종의 변수라고 이해하면 된다. 필드는 클래스 형을 포함해서 어떤 데이터 형으로도 선언해 사용할 수 있다. 필드를 선언하려면 단순히 변수를 선언하듯이 하면 된다. 예를 들어, 다음의 선언부는 TNumber라는 컴포넌트를 선언하는데, 여기에는 Int라는 정수 필드만을 가지고 있다. type TNumber = class Int: Integer; end; 2. 메소드 (Methods) 메소드는 클래스와 연관되.. 2021. 6. 7.
객체지향 언어로서의 오브젝트 파스칼 1편 객체지향 언어로서의 오브젝트 파스칼 1편 객체지향 언어로서의 오브젝트 파스칼 오브젝트 파스칼의 객체지향성을 몰라도 델파이 어플리케이션을 쉽게 만들 수 있다. 단순히 폼을 하나 만들고, 거기에 여러가지 컴포넌트 들을 추가하고, 이벤트 핸들러에 적당한 내용의 코드 들을 추가하면 그걸로 충분한 것이다. 그렇지만, 이것을 이해하면 델파이가 어떤 방법으로 작업을 처리하는지 이해할 수 있고, 자신만의 컴포넌트를 만들어 내거나, 비교적 커다란 프로젝트를 진행할 때에 커다란 도움을 받게 될 것이다. ​ OOP의 기본 개념 프로그램은 데이터와 이를 처리하는 알고리즘으로 구성되어 있다고 하는 유명한 말이 있다. 그렇기 때문에, 프로그래밍 언어의 구조를 가만히 살펴보면 대부분의 경우 데이터를 다루는데 필요한 각종 정의 들과.. 2021. 6. 4.
델파이 기본타입 헬퍼 델파이 기본타입 헬퍼 자바 버전5부터 오토박싱 개념이 도입되어 기본타입을 마치 객체처럼 사용할 수 있도록 편리한 기능이 도입되었다. 델파이도 비슷한 기능을 제공하는데 아마 XE8부터인가?.. 도입시점을 알 수 없지만.. 엠바카데로 델파이 위키를 보면 XE3부터 지원되는 듯한데.. (검색해봤으나, 시원히 알려주는 자료를 찾지 못했습니다 ㅠㅠ) 아무튼.. 델파이 헬퍼는 class나 record에서 사용가능한데 이 주제는 냅두고.. 기본타입에 대한 헬퍼만 소개하겠다 예전에는 var intValue: Integer; begin intValue:= StrToInt('100') end; 라고 작성했지만 기본타입에 대한 헬퍼덕분에 아래처럼 사용이 가능하다. intValue:= '100'.ToInteger; 객체를 이.. 2021. 6. 3.
델파이(Delphi) 디자인패턴(Design pattern) 5탄 FactoryMethod 패턴​ 팩토리 메서드는 = 팩토리 + 메서드 의 합성어 인데, 여기서 말하는 팩토리(Factory) 란 말을 공장이란 의미로 이해하는 사람들이 많은데 , 패턴강좌에서는 공장이란 말대신 어떤 클래스의 객체를 대신 생성해 주는 특수한 클래스 ​ 메서드는 말그대로 그 특수한 클래스의 메서드를 의미한다. 우리는 이 멤버 메서드를 호출하여 클래스의 객체를 가져올 것이다. 자세한 내용은 이따가 보고, 이런 연유로 팩토리 메서드란 말이 나온 것이다. 팩토리 메서드는 이해하기 위해서는 다음의 코드를 보아야 한다. 다음의 코드에서 유심히 보아야 할 것은 abstract 가 붙어 있는 클래스의 생성자이다. TObj = class public Constructor Create; Virtual; Ab.. 2021. 6. 2.
델파이(Delphi) 디자인패턴(Design pattern) 4탄 델파이(Delphi) 디자인패턴(Design pattern) 4탄 Strategy 패턴 Strategy 패턴을 쉽게 이해하는 방법은, 상속의 단점 두가지(불필요한 기능상속, 다중상속 불허) 보완하기 위한 Interface 의 사용과 Abstract 패턴의 사용을 통한 메서드의 다형성 보장이다. Strategy 패턴에 대해 구글링을 해 보면 Abstract 패턴만을 강조하여 도식화 해 놓고 Strategy 패턴이라고 알려주는 곳이 많은데, 이는 잘못된 설명이다. Strategy 패턴의 진정한 뜻은 자주 바뀌는 개발 요구사항에 대비해 최소의 비용을 들여 전략적으로 코드가 유연성을 가질 수 있도록 설계하는 기법이다. 코드의 유연성이란 말 안에는 기능의 구현없이 완성된 모듈을 재빠르게 가져다 쓸수 있도록 하는 .. 2021. 6. 1.
델파이(Delphi) 디자인패턴(Design pattern) 3탄 델파이(Delphi) 디자인패턴(Design pattern) 3탄 싱글톤(Singletone) 패턴 Singletone 은 single + tone 의 복합어 즉, 하나 + 논조 [ 論調 ] 논조 : 논하는 말이나 글의 투. 위 말을 디자인패턴의 형식에서 풀어 보면 프로그램 전체에서 "오직 하나의 인스턴스 가 존재하여야 한다는 원칙" 입니다. 이런 원칙을 세워서 프로그램을 개발해야 하는 이유는 원칙을 위배하게 되면 프로그램이 뒤죽박죽이 될 수 있기 때문입니다. 프로그램 개발에 있어 싱글톤으로 생성해야 하는 클래스 인스턴스가 여러가지가 존재하겠지만 가장 기본이되고 필수적인 클래스가 바로 어플리케이션의 설정값을 들고 있는 프로그램 설정값 클래스입니다. 특수한 경우가 아니라면 설정값은 프로그램 전체에서 하나이.. 2021. 6. 1.
델파이(Delphi) 디자인패턴(Design pattern) 2탄 델파이(Delphi) 디자인패턴(Design pattern) 2탄 옵져버(Observer) 패턴 "Observer" 라는 단어를 영어사전에서 찾아 보면 아래와 같습니다. Observer - 보는 사람, 목격자, 관찰자. 정찰병, 참관인 이런 여러가지 말이 나오는데 디자인패턴에서 통용되는 가장 적합한 해석은 바로 "관찰자" 또는 "정찰병" 입니다. 이 관찰자의 핵심적인 역활은 다음과 같습니다. 1. 어떤 상황이 발생하는지 잘 관찰하는 것 2. 특정상황이 발생하면 그 사실을 꼭 알아야 하는 다른 대상들에게 전파해 주는 것 이런 개념이 개발에도 꼭 필요한 경우가 있습니다. 채팅프로그램이 Observe 패턴을 쓰는 가장 좋은 예입니다. 채팅방에 10명의 대화자가 참가중인데 이중에 누구든 글을 쓰면 다른 대화자들.. 2021. 5. 31.
델파이 디자인패턴 1탄 델파이 디자인패턴 1탄 디자인패턴이란? 프로그램을 만드는데 있어 초식이 되는 코딩방식 "초식"이란 말을 처음 들어 보시는 분들도 많을 텐데요. 이 말을 국어사전에서 찾아보면 아래와 같은 해석이 달려 있습니다. 초식(招式) - 무협물에서 공격이나 방어를 하는 기본기술을 연결한 연속동작 다시말해 어떤 권법을 구사하는데 있어 핵이 되는 연결된 동작들을 정리하여 그 이름을 부여해 놓은 것입니다. 예를 들면 다음과 같습니다. 초식 1 : 양손으로 얼굴 가리기 + 숙이거나 앉기 + 주먹으로 옆구리 공격 (주로 주먹으로 공격해 오는 상대에게 쓰면 좋음) 초식 2 : 한걸음 뒤로 물러나기 + 양손으로 얼굴 가리기 + 재빨리 다가가기 + 주먹으로 얼굴 가격하기 (주로 발로 공격해 오는 상대에게 쓰면 좋음) 이런 초식의 .. 2021. 5. 28.
델파이 익명메소드 Part2 익명 메소드의 사용 익명 메소드는 다음의 예와 같이 일반적으로 어떤 것에 대입됩니다. 익명 메소드는 또한 함수에 의해 리턴되거나 메소드를 호출할 때 파라미터 값으로 전달될 수도 있습니다. 예를 들어, 아래는 바로 위에서 정의한 익명 메소드 변수 myFunc를 사용하 는 코드입니다. 익명 메소드 뿐만 아니라 메소드 참조도 메소드 변수에 대입될 수 있습니다. 예를 들면 다음 과 같습니다. 하지만, 그 반대는 되지 않습니다. 익명 메소드를 일반 메소드 포인터에 대입할 수는 없습니다. 메소드 참조는 매니지드 타입이지만 메소드 포인터는 언매니지드 타입입니다. 따라서 타입 안전성의 이유로 메소드 참조를 메소드 포인터로 대입하는 것은 지원되지 않습니다. 예를 들어, 이벤트는 메소드 포인터 값 속성이므로, 익명 메소드.. 2021. 5. 27.
델파이 익명메소드 Part1 델파이 익명메소드 Part1 이름이 시사하는 것처럼, 익명 메소드(anonymous method)는 이름이 연관되지 않은 프로시저나 함수 익명 메소드는 어떤 코드 블록을 변수에 대입될 수 있거나 메소드의 파라미터로 사용될 수 있는 엔티티로 취급합니다. 또한 익명 메소드는 그 메소드가 정의된 문맥에서 변수나 변수에 지정된 값을 가리킬 수도 있습니다. 익명 메소드는 단순한 문법으로 정의되고 사용될 수 있습니다. 익명 메소드는 다른 언어들의 클로저(closure) 문법과 유사합니다. 익명 메소드의 문법 익명 메소드는 일반 프로시저나 함수와 비슷하게 정의되지만 이름이 지정되지 않습니다. 예를 들어, 아래 함수는 익명 메소드로 정의된 함수를 리턴합니다. MakeAddr 함수는 이름 없이 선언된 함수, 즉 익명 메.. 2021. 5. 26.