본문 바로가기

Delphi127

델파이 동적 2차원 배열 델파이 동적 2차원 배열 델파이 동적 2차원 배열 런타임 시에 크기를 조정할 수 있는 배열을 의미 2차원 배열을 저장할 변수를 선언합니다. 예를 들어, 다음과 같이 선언할 수 있다 var MyArray: array of array of Integer; 배열을 생성하려면 SetLength 함수를 사용한다. 예를 들어, 3x3 크기의 배열을 생성하려면 다음과 같이 할 수 있다 SetLength(MyArray, 3, 3); 배열에 접근하려면 행과 열 인덱스를 사용한다. 예를 들어, 배열의 원소에 접근하려면 다음과 같이 할 수 있다 MyArray[0][0] := 1; MyArray[0][1] := 2; MyArray[1][0] := 3; // 이런 식으로 계속해서 배열을 초기화할 수 있습니다. 배열 크기를 동적.. 2023. 9. 25.
델파이 Parameter 델파이 Parameter Parameter 일반적으로 함수나 메서드로 전달되는 값이라고 한다. 이것은 함수나 메서드가 실행될 때 필요한 정보를 전달하고 결과를 반환하는 데 사용되며, 파라미터는 함수나 메서드의 정의에 포함되며 해당 함수나 메서드를 호출할 때 전달해야 하는 값들을 명시적으로 지정한다. 파라미터는 함수나 메서드의 매개변수로도 알려져 있다. function myfunc ( a : String ; const b : String; var c : TButton; out d : integer; ) : integer; 1) 'a' : 아무 선언없이 쓰인 경우로 'a'는 function 내에서 선언된 local 변수처럼 사용된다. 2) const 'b' : function 내에서 b는 상수로 사용된다. .. 2023. 9. 22.
델파이 Application 델파이 Application TApplication TApplication type 으로, 프로그램 그 자신으로 생각할 수 있다. Delphi 어플리케이션의 주요 실행 및 관리를 담당합니다. Delphi는 GUI (그래픽 사용자 인터페이스) 기반 애플리케이션을 개발하기 위한 강력한 통합 개발 환경(IDE)이며, TApplication은 이 환경에서 GUI 애플리케이션을 작성할 때 핵심 역할을 한다. Dpr(프로젝트 파일) 과 개발환경 내 Project -> options -> Application에서 Title, Help File, Icon 등을 지정해 줄 수 있다. [일반사항] - 전체중 일부로 특정한 것만을 기록했다. Property - ExeName : String ; - 경로를 포함한 실행파일 명.. 2023. 9. 21.
델파이 Self 델파이 Self Self 일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다. 객체 지향 프로그래밍에서 "self"는 주로 현재 객체(인스턴스)를 가리키는 특별한 키워드 또는 식별자이다. 일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다. Delphi에서는 "self" 대신에 "Self"라는 예약어를 사용합니다. "Self"를 사용하여 현재 객체의 속성 및 메서드에 접근하거나 다른 객체와 구분하기 위해 사용됩니다. 예를 들면, Button1 := TButton.Create(Self); 위의 예와 같은 경우에 Self는 Button의 Owner인 Form을 가리킨다... 2023. 9. 20.
델파이 Owner 와 Parent 델파이 Owner 와 Parent 델파이 "Owner"와 "Parent"는 객체 지향 프로그래밍 개념 중에서 객체 간의 관계를 정의하는 데 사용되는 중요한 개념이다 Owner (소유자) "Owner"는 주로 컴포넌트와 관련이 있습니다. 컴포넌트는 Delphi 응용 프로그램에서 재사용 가능한 코드 조각을 나타내며, 시각적 또는 비시각적으로 폼 또는 다른 컴포넌트에 배치될 수 있다. Owner 컴포넌트는 다른 컴포넌트를 소유하고 관리하는 컴포넌트입니다. 예를 들어, 폼(Form)은 여러 컴포넌트를 소유하고 해당 컴포넌트들을 폼 위에 배치합니다. Owner-ownee(소유자-소유물) 관계에서, 소유자 컴포넌트가 소유물 컴포넌트의 생명주기를 관리하며, 소유물이 소유자를 참조할 수 있습니다. 주요 메서드와 속성 .. 2023. 9. 13.
기간사이 특정요일 개수알아내기 기간사이 특정요일 개수알아내기 function CountWeek(StartDate, EndDate : TDate; CheckWeek : Integer) : Integer; var DayNum, StartWeek : Integer; begin DayNum := Trunc(Int(EndDate - StartDate)); // MATH Unit 사용을 하지 않았을 경우 if StartDate > EndDate then StartWeek := DayOfWeek(EndDate) else StartWeek := DayOfWeek(StartDate); // StartWeek := DayOfWeek(Max(StartDate,EndDate)); // MATH Unit 사용시 Result := DayNum div 7; i.. 2023. 9. 11.
델파이 포인터 (Pointer) 11편 델파이 포인터 (Pointer) 11편 데이터 좌표에 의한 수정 포인터 C/C++ int* pNum; // integer pointer char* pText; // char pointer .. *pNum = 123456; *pText = 'C'; Delphi pNum: ^integer; // integer pointer pText: ^Char; // char pointer ... pNum^ := 123456; pText^ := 'C'; 델파이와 포인터 델파이에선 C/C++ 과 달리 포인터 타입에 주의 하여야 합니다. C/C++ : 어떤 타입의 포인터이든 대입 가능 int* pNum; char* pText; ... pNum = pText; pText = pNum; Delphi : 다른 타입의 포인터를 대입.. 2023. 8. 24.
델파이 포인터 (Pointer) 10편 델파이 포인터 (Pointer) 10편 ShellApi 를 이용할때 윈도우에서 사용하는 언어인 'C' 와 델파이의 'Pascal'의 포인터 다루는 방법이 달라 많은 혼동(나만?)을 일으킵니다. 특히나 파스칼에서는 포인터방법이 여러가지가 있어 햇갈리기 아주 좋습니다. 해서 한번 정리하여 보았습니다. 예제는 폴더를 찾아 지정하는 SHBrowseForFolder 를 이용하는 것으로 하였습니다. 1. 버퍼를 이용하는 방법 var Buffer : array[0..255] of char; begin pszDisplayName:= @Buffer; ....... MessageBox(handle, Buffer, '', MB_OK); end; 2. pChar 를 이용하는 방법 : 'C' 와 유사하지요 var Buffer:.. 2023. 8. 23.
델파이 포인터 (Pointer) 9편 델파이 포인터 (Pointer) 9편 포인터의 이해 1 포인터를 쉽게 이해하기 위해선 어셈블러를 알고 있다면 금방알수 있습니다. 그렇지 않다면 메모리에 대한 계념 자체를 이해하고 있다고 해도 금방 알수가 있죠. 그러지 않다면 배열 에 대한 이해를 알고 있다면 도움이 됩니다. 메모리로 설명 하자면 (윈도우는 32 비트메모리를 쓰므로 32 트로 갑니당) 00000000 2023. 8. 22.
델파이 포인터 (Pointer) 8편 함수 포인터 unit MainFrm uses FrmInt type TFrmMain = class(TForm) private FWinForm: IWin32Form; .... implementation uses WinNTFrm, Win9xFrm; procedure TFrmMain.FormCreate(Sender: TObject); begin if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then FWinForm := TFrmWin9x.Create else if Win32Platform = VER_PLATFORM_WIN32_NT then FWinForm := TFrmWinNT.Create else raise Exception.Create('This application ca.. 2023. 8. 21.
델파이 포인터 (Pointer) 7편 델파이 포인터 (Pointer) 7편 procedure TForm1.MyProcedure; var AStr : ^string; begin AStr^ := 'SAMPLE'; ShowMessage(AStr^); end; 위의 예제는 AStr이 메모리에 할당되지 않아서 에러가 난다고했습니다. 그렇다면 메모리에 어떻게 할당을 해야 할까요? New라고 하는 함수(프로시져임)를 사용합니다. 델파이 New함수는 도움말을 보시면 아시겠지만 동적변수(포인터의 값을 의미)에 포인터를 할당하는 함수 입니다. 그러니까 위의 예제를 에러가 나지않도록 하려면 다음과 같이 한줄 추가 하면 되겠네요. procedure TForm1.MyProcedure; var AStr : ^string; begin New(AStr); { 2023. 8. 11.
델파이 포인터 (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.
태스크바 (taskbar) 에서 숨기기 태스크바 (taskbar) 에서 숨기기 To do this you will need to: 1.Select the View -> Project Source, from Delphi's main menu. 2.Add the Windows unit to the uses clause. 3.Add Application.ShowMainForm := False; to the line after "Application.Initialize;". 4.Add: ShowWindow(Application.Handle, SW_HIDE); to the line before "Application.Run;" Your main project source file should now look something like this: pro.. 2023. 8. 1.
시스템 날짜바꾸기 시스템 날짜바꾸기 방법 1 시스템의 날짜를 바꾸는 방법은 아래와 같이 윈도우 API를 사용하면 간단히 바꿀수 있습니다. procedure TForm1.ChgSysDateTime(ADateTime: TDateTime); var sys_time: TSystemTime; begin sys_time.wYear := StrToInt(FormatDateTime('yyyy', ADateTime)); sys_time.wMonth := StrToInt(FormatDateTime('m', ADateTime)); sys_time.wDay := StrToInt(FormatDateTime('d', ADateTime)); sys_time.wHour := StrToInt(FormatDateTime('h', ADateTime)); .. 2023. 7. 27.
Hook(훅) SetWindowsHookEx Hook(훅) SetWindowsHookEx SetWindowsHookEx 함수는 Windows 운영 체제에서 훅(Hook)을 설치하기 위해 사용되는 함수입니다. 훅은 시스템 내에서 발생하는 이벤트를 감지하고 해당 이벤트에 대한 처리를 수행하는 데 사용됩니다. 예를 들어, 키보드 이벤트, 마우스 이벤트, 윈도우 메시지 등을 감지하고 원하는 동작을 수행할 수 있습니다. SetWindowsHookEx 함수는 다음과 같은 매개변수를 가지고 있습니다 idHook: 설치할 훅의 유형을 지정하는 매개변수로, 훅의 종류에 따라 다른 상수 값을 사용합니다. 예를 들어, WH_KEYBOARD는 키보드 이벤트를 감지하는 훅을 설치하는 상수입니다. lpfn: 훅 프로시저(Hook Procedure)로서 호출될 함수의 포인터.. 2023. 7. 7.