본문 바로가기

델파이445

Delphi Open ToolsAPI Delphi Open ToolsAPI 자고 일어나면 빌딩이 선다. 이 새삼스럽지 않은 기적은 철골구조와 조립식 컨크리트에 의해 이루어진다. 철골이 올라가는가 하면 금새 벽이 붙여지고 며칠 안가 빌딩이 완성된다. 이런 조립형태의 접근방식은 빠른 결과물을 보게 해준다. 이런 조립형태의 개발방식은 RAD(고속개발)툴의 근간을 이루고 있다. 델파이에서 조립식 컨크리트의 역할은 컴퍼넌트가 담당한다. 그리고 굳건하게 이런 컴퍼넌트 중심의 개발환경을 뒷받침하고 있는 철골구조가 바로 IDE(통합개발환경)이다. 보다 빠르고 시각화된 개발환경을 제공하기 위해서 일찌감치 IDE(통합개발환경)라는 위대한 환경을 제시해 왔다. IDE를 통해 단순 컴파일러가 아니라 개발툴이라는 당시로서는 진보적 개념을 처음 도입한 것은 볼랜드였.. 2023. 12. 14.
델파이 디버깅용 콘솔창 만들기 델파이 디버깅용 콘솔창 만들기 폼이 실행되면서 콘솔창을 한개 만든뒤, 폼위에 있는 마우스 좌표를 콘솔창에 실시간으로 출력하는 예이다 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private de.. 2023. 12. 11.
델파이 메세지다이어로그(MessageDialog) 원하는 키 받기 델파이 메세지다이어로그(MessageDialog) 원하는 키 받기 . . . private { Private declarations } protected public { Public declarations } Procedure HelpBoKeyPress(Sender : TObject; var Key : Char); end; var Form1: TForm1; LegalKeys : String; procedure TForm1.Button1Click(Sender: TObject); Var S : String; Begin LegalKeys := 'ABC123'; S := '원하는 항목을 선택하세요!'#13#13'' + ' A 키눌러라'#13'' + ' B.키눌러라'#13'' + ' C.키눌러라'#13'' + '.. 2023. 11. 30.
컴포넌튼 만들기(초간단) 컴포넌튼 만들기 TLabel 을 상속받어, 기본 Default 배경이 검은색으로 설정되는 컴포넌트입니다. unit BlackLabel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TBlackLabel = class(TLabel) private { Private declarations } protected { Protected declarations } public constructor create(aOwner: TComponent); override; published { Published declarations } end; procedure Register; i.. 2023. 11. 29.
메인 메뉴에 팝업메뉴 달기 메인 메뉴에 팝업메뉴 달기 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; PopupMenu1: TPopupMenu; N11: TMenuItem; N21: TMenuItem; N31: TMenuItem; N41: TMenuItem; N123121: TMenuItem; N122221: TMenuItem; N44441: TMenuItem; N33331: TMenuI.. 2023. 11. 28.
프린터 목록 불러오기 / 기본프린터 불러오기 프린터 목록 불러오기 / 기본프린터 불러오기 uses Printers, Messages; function GetDefaultPrinter : string; var ResStr : array[0..255] of char; begin GetProfileString('Windows','device','',ResStr,255); Result := StrPas(ResStr); end; procedure SetDefaultPrinter(NewDefPrinter : string); var ResStr : array[0..255] of char; begin StrPCopy(ResStr,NewdefPrinter); WriteProfileString ('windows', 'device', ResStr); StrCopy (.. 2023. 11. 24.
델파이 툴 메뉴 생성 (현재 프로젝트 경로 열기) 델파이 툴 메뉴 생성 델파이 메뉴 Tools -> Configure Tools 메뉴 클릭 ​ Add 버튼 클릭 ​ Tilte : 현재 프로젝트 경로 열기 Program : Explorer.exe Parameters : $PATH($EXENAME),/e OK 클릭​ 결과 메뉴가 생성된걸 알수있다. 클릭하면 해당 프로젝트 경로로 탐색기가 열린다 . ​ 소스코드 에디터에 활성화되어있는 파일(Unit)명은 $EDNAME 이다 (다른 에디터로 유닛을 열때 좋겠..) 파일명만 전달할려면 $NAMEONLY(파일명) 2023. 11. 22.
윈도우 사용자 이름 알아내기 윈도우 사용자 이름 알아내기 function GetCurrentUserName : string; const cnMaxUserNameLen = 254; var sUserName : string; dwUserNameLen : DWord; begin dwUserNameLen := cnMaxUserNameLen-1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetCurren.. 2023. 11. 17.
델파이 UTF-8 델파이 UTF-8 UTF-8 UCS Transferation Format 의 약자로 Unicode를 위한 가변 길이 문자 인코딩 방식 중 하나이다. Unicode는 전 세계의 모든 문자를 표현하기 위한 표준을 제공하는 국제적인 문자 집합이다. UTF-8은 이러한 Unicode 문자를 바이트로 효과적으로 표현하는 방법 중 하나로, 많은 컴퓨터 시스템에서 표준으로 사용되고 있다. UTF-8 특징 가변 길이 인코딩: UTF-8은 각 문자를 1바이트부터 4바이트까지 가변 길이로 인코딩한다. 기본적으로 ASCII 문자는 1바이트로 인코딩되며, 이는 기존의 ASCII 문자 집합과의 하위 호환성을 제공한다. 다른 언어의 문자는 더 많은 바이트로 표현된다. ASCII 호환성: UTF-8은 ASCII 문자 집합과 완벽하.. 2023. 11. 15.
Case문으로 문자 비교하기 Case문으로 문자 비교하기 uses System.TypInfo type TSameText = (ChrMove, MapLoad, MapLoad2, FadeOut, FadeIn, SetNPC, NPCMove); .... implementation .... procedure TForm1.Button1Click(Sender: TObject); var strTemp : string; begin strTemp := 'FadeIn'; case GetEnumValue(TypeInfo(TSameText), strTemp) of 0: ShowMessage('0'); 1: ShowMessage('1'); 2: ShowMessage('2'); 3: ShowMessage('3'); 4: ShowMessage('4'); 5: .. 2023. 11. 8.
정해진 시간에 없어지는 MessageBox 정해진 시간에 없어지는 MessageBox 정해진 시간에 없어지는 MessageBox procedure MessageBoxTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); stdcall; ... procedure MessageBoxTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); begin PostQuitMessage(0); end; function TimedMessageBox(hwndParent: HWND; ptszMessage: LPCTSTR; ptszTitle: LPCTSTR; flags: UINT; dwTimeout: DWORD): Integer; var idTimer: U.. 2023. 11. 6.
델파이 RS232 통신 RS232 통신 RS232 RS-232는 시리얼 통신을 위한 표준 통신 프로토콜. 이것은 전자 장치 간에 데이터를 송수신하는 데 사용되며, 초기에는 컴퓨터 및 주변 장치 간의 통신을 위해 개발되다. 전압 레벨 RS-232는 양방향 통신을 위해 표준 전압 레벨을 정의다. 이것은 대부분 양의 전압과 음의 전압 사이의 차이로 데이터를 나타낸다. 전형적인 레벨은 +12V와 -12V 또는 +5V와 -5V와 같은 값을 가진다. 비동기 통신 RS-232는 비동기 통신을 기반으로 하며, 데이터를 보낼 때 시작 비트와 정지 비트를 사용하여 데이터 프레임을 형성합니다. 이를 통해 데이터의 시작과 끝을 정의하고 데이터 비트를 보내는 장치 간의 동기화를 가능하게 한다. 다중 데이터 송수신 RS-232는 여러 데이터 비트를 전.. 2023. 11. 3.
최상위 윈도우 얻기 최상위 윈도우 얻기 현재 윈도우상에서 최상위에 떠있는 이름을 알려주는 함수 function OKTopWindowText: string; var WinName: array[0..144] of char; begin FillChar(WinName, 145, 0); GetWindowText(GetForegroundWindow, WinName, 144); SetLength(Result, StrLen(WinName)); Result := StrPas(WinName); end; 2023. 11. 1.
동적으로 메뉴(TMenuItem) 만들고 클릭 이벤트 만들기 동적으로 메뉴(TMenuItem) 만들고 클릭 이벤트 만들기 아래와 같이 popMenuSkin MenuItem에 서브 MenuItem을 동적으로 추가할 수 있다. // Create Dynamic MenuItem var skinCount: Integer; MI: array of TMenuItem; begin skinCount := 3 for i := popMenuSkin.Count - 1 downto 0 do popMenuSkin.Remove(popMenuSkin.Items[i]); SetLength(MI, skinCount); for i := 0 to skinCount do begin MI[i] := TMenuItem.Create(Self); MI[i].Caption := IntToStr(i); MI[i.. 2023. 10. 31.
델파이 숫자 한글변환 델파이 숫자 한글변환 첫번째 함수 function IntToHanguel( Value: Int64 ) : String; const NumberChar: array['0'..'9'] of String = ( '영','일','이','삼','사','오','육','칠','팔','구' ); LevelChar: array[0..3] of String = ( '', '십','백','천' ); DecimalChar: array[0..5] of String = ( '','만','억','조','경','현' ); var S : String; UseDecimal : Boolean; i, Level: Integer; begin Result := ''; S := IntToStr( Value ); UseDecimal := Fals.. 2023. 10. 27.
델파이 콤보박스(TComboBox)의 팝업리스트 가로폭 늘리기 델파이 콤보박스(TComboBox) procedure TMain_Form.ComboBox1DropDown(Sender: TObject); begin SendMessage( TComboBox( Sender ).Handle, CB_SETDROPPEDWIDTH, 300, 0 ); end; 추가 TiP 콤보박스 글자까지 확인해서 글자의 최대값으로 컴보박스 크기를 조절하는것입니다. procedure TForm1.AdjustDropDownWidth(Sender: TObject); var j,i,ItemWidth, IW: Integer; begin For j := ComponentCount-1 Downto 0 do Begin ItemWidth := 0; If (Components[j] is TCombobox) The.. 2023. 10. 26.
델파이 메소드 포인터(Method Pointer) 델파이 메소드 포인터(Method Pointer) 프로시저 형 (Procedural Type) : C 언어의 함수 포인터와 유사한 개념. 정수나 문자열 변수 뿐 아니라 프로시저를 변수로 사용할 수 있다. type TestProc = procedure (var Param: Integer); 다음과 같이 선언된 프로시저 형의 변수 TestProc이 있다. 이것은 레퍼런스에 의해 전달되는 정수 파라미터의 프로시저 형의 변수를 뜻한다. 이 프로시저 형은 정확하게 같은 파라미터를 갖는 루틴이면 어느 것과도 호환이 된다. procedure DoubleProc (var Value: Integer); begin Value := Value * 2; end; procedure TripleProc (var Value: In.. 2023. 10. 24.
델파이 소켓(통신) 프로그램 델파이 소켓 프로그램 델파이 소켓(통신) 프로그램 송수신 방식 1. 심플렉스 (Simplex) : 한 지점에서 다른 지점으로만 보내는 방식 2. 하프 – 듀플렉스 (Half - Duplex) : 동시에 양방향으로 통신할 수는 없고 한 지점에서 다른 지점으로 보낼 때는 받는 지점에서는 받기만 할 수 있고 보낼 수는 없는 방식 3. 풀 – 듀플렉스 (Full - Duplex) : 양방향 통신이 가능한 방식 데이터 전송에 필요한 요소 1. Ip 2. Port 3. Packet 네트워크 통신 유형 1. TCP (Transmission Control Protocol) : 목적지와 일단 접속을 이룬 다음에 데이터를 전송하는 연결 지향 프로토콜 2. UDP (User Datagram Protocol) : 사전 접속을.. 2023. 10. 23.
델파이 리소스(Resource)의 활용 2 델파이 리소스(Resource) 1. 리소스 Dll 만들기 리소스 Dll이란 말 그대로 리소스를 포함하고 있는 Dll을 말한다. 만드는 순서를 먼저 알아보자. 1. 리소스의 경로를 저장하고 있는 RC 파일을 만든다. 2. RC 파일을 Brcc32등으로 컴파일 하여 Res 파일로 만든다. 3. 만들어진 Res 파일을 Dll에 포함시킨다. (폼에 포함시키는것과 동일하다.) 4. Dll을 컴파일 한다. 2번까지는 지난번 강좌의 내용과 같다. 3번 항목의 Res를 Dll에 포함 시키는 부분은 폼에 하는것과 동일하다고 했는데 아래의 예제를 보면 왜 동일하다는 건지 쉽게 이해가 될 것이다. library ResOnly; {$R Resource.res} begin end. 아무런 함수등을 포함하지 않고 오직 리소스만.. 2023. 10. 18.
델파이 리소스(Resource)의 활용 1 델파이 리소스(Resource) 리소스 파일 만들기 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일의 예 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다.. 2023. 10. 13.