본문 바로가기

프로그래밍/PC38

Interface 요약 #4 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 7. Interface의 포인터 획득하기 var MyInteger: TFormattedInteger; MyNumber: IFormattedNumber; begin MyInteger:= TFormattedInteger.Create(12); MyNumber:= MyInteger; end; 컴파일시 정적으로 할당됨(만약, 객체가 해당 인터페이스를 지원하지 않으면 컴파일시 에러발생) var MyObject: TObject; MyNumber: IFormattedNumber; begin MyObject:= TFormattedInteger.Create.. 2012. 4. 19.
Interface 요약 #3 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 5. TInterfacedObject IUnknown 인터페이스의 실행부가 작성되어 있음(따라서, TInterfacedObjet를 상속하면 QueryInterface, _AddRef, _Release를 구현해줄 필요가 없음.) system.pas 에 정의됨 TInterfacedObject = class(TObject, IUnknown) protected FRefCount: Integer; function QueryInterface(const IID: TGUID; out Obj): HResul; stdcall; function _AddRef.. 2012. 4. 19.
Interface 요약 #2 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 4. GUID(Globally Unique Identifier) GetInterface 와 as 연산자를 사용하기 위해선 필요함(따라서 COM외에도 사용됨) Ctrl + Shift + G 로 생성 혹은 CoCreateGuid (Win API) 함수 호출 유일한 값임(현재 시간, 현재 프로세스 번호, MAC Address 등으로 생성) TGUID = record D1: LongWord; D2: Word; D3: Word; D4: array[0..7] of Byte; end; MyGuid:= ['{2DE825C1-EADF-11D2-B39F-0.. 2012. 4. 19.
Interface 요약 #1 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 현재, 틈틈이 COM 공부를 하고 있는 중입니다. 해서 interface에 대해 이것저것 살펴보고 있는 중인데요. ^^ '사람은 아는 만큼 본다'라는 말을 절감하고 있습니다. 두어 달 전에는 볼 수 없었던 것들이 지금은 보이는 군요. 처음엔 아래 한글을 띄우고 공부한 것들을 강좌형태로 만들 생각이었는데 2페이지 가량 진행하다가 포기하였습니다. 아무래도 시간이 많이 부족하네요. 일단은 추후 문서화 작업을 하기로 하고... 급한대로 여기 게시판에다가 생각나는 부분을 요약할 생각입니다. 1. 추상 클래스 일반적인 클래스와 차이는 없으나, 거기에.. 2012. 4. 19.
파스칼로 만든 부트로더... - 1 - 2006년경 OS 제작에 한창 관심을 가지고 있던 무렵, Turbo Pascal 과 Delphi 로 모든 걸 제작해보고자 마음 먹고 이리저리 머리를 굴린 결과~ TP 로 부트로더를 만드는데 성공했다. { 000h~3FFh : Interrupt Vector Table 400h~4FFh : BIOS 500h~5FFh : DOS Parameters 1000h~7BFFh : unusable 7C00h~7DFFh : Boot Sector 7E00h~8FFFh : FAT Table 9000h~ABFFh : Directory Entry Table 10000h~1FFFFh : Stack 64 KBytes 20000h~2FFFFh : Boot Loader 64 KBytes 30000h~9FFFFh : Useable 44.. 2012. 4. 9.
GStreamer 빌드하기 - Visual Studio 2008 Express 관련 소스를 http://ossbuild.googlecode.com/svn/trunk/ 에서 체크아웃 한다. Windows Installer XML (WiX) 3.5 이상 버전을 다운로드 받아 설치(Wix35.msi)한다. http://wix.sourceforge.net/downloadv35.html DirectX SDK November 2008 이상 버전이 깔려있지 않으면 설치한다. 다운로드 PyGobject 를 다운로드 받아 설치한다. 이때 설치되어있는 해당 파이썬 버전에 맞는 설치 파일을 선택한다. http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.28/ 이때, 파이썬이 설치되어있는 경로를 지정해준다. 끝으로 Visual Studio 2008 E.. 2011. 12. 23.
Automation Server 에서 사용할 수 있는 type 일반적으로 윈도우즈에서 자동으로 Marshaling 해주는 타입(델파이 기준)은 다음과 같다. SmallInt, Integer, Single, Double, Currency, TDateTime, WideString, IDispatch, SCODE, WordBool, OleVariant, IUnknown, Shortint, Byte, Word, UINT, int64, Largeuint, SYSINT, SYSUINT, HResult, Pointer, SafeArray, PChar, PWideChar 하지만, COM Automation Server 에서는 아래 타입만을 안전하게 사용할 수 있다. SmallInt, Integer, Single, Double, Currency, TDateTime, WideStri.. 2011. 5. 25.
Automation Server 등록/해제 델파이에서 in-of-process COM 의 경우 regsvr32 등을 통하여 등록/해제한다. 그렇다면 out-of-process COM 으로 Automation Server 의 등록/해제는 어떻게할까? 가령, Automation Server 실행 파일이 AutoServer.exe 라고할 경우, 등록은... AutoServer.exe /regserver 해제는... AutoServer.exe /unregserver 를 한번 실행해주면 된다. 물론 Vista 나 Windows 7 의 경우에는 관리자 권한으로 실행해주어야한다. 뭐 이런걸 블로그에까지 적냐싶지만... 잘못된 책의 내용(그냥 실행만하면 된다나? ㅡㅡ;;)으로 몇 시간을 삽질했다. 말그대로 분노의 블로깅이다. (차라리 책이 없었더라면 고생하지도.. 2011. 5. 24.