본문 바로가기

delphi484

윈도우 사용자 이름 알아내기 윈도우 사용자 이름 알아내기 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.
델파이 타이머(TTimer) Interval 시간오차 해결방법 델파이 타이머 델파이에서 컴포넌트로 제공되는 TTimer의 경우에는 정확한 시간에 맞게 콜백을 하지 않는다. Interval 을 1/1000 초까지 조정할 수 있지만 실제로 호출되는 것은 1/18.2 초 단위로 끊어 지게 되기때문이다. 만약 TTimer로 MP3 플레이어나 동영상 재생기를 만든다면 어떻게 될까 ? MP3 음향이 정확한 박자로 재생하지 못할 것이고 동영상도 프레임이 정확하지 못해서 눈이 상당히 피로해질 거다. 하지만 지금 소개하는 타이머를 쓰게 되면 1ms 의 오차정도만을 허용하는 고급의 타이머가 생성되게 됩니다. 어려운 내용이 아니기 때문에 그냥 소스에 주석을 붙이는 차원으로 끝내겠습니다. 그리고 dfm 의 내용도 Text 로 뒤에 첨가하였으니 직접 폼을 만들어서 테스트 해보면 된다 폼에.. 2023. 10. 11.
델파이 데이타베이스 기초 5 델파이 데이타베이스 Post 한다음 Disk로 바로 저장하기 위해 DbiSaveChange함수를 쓰는 예입니다. CustTable의 AfterPost이벤트 헨들러에서 procedure TDataModule2.CustTableAfterPost(DataSet: TDataSet); begin DbiSaveChanges((DataSet as TTable).Handle); //또는 DbiSaveChanges(CustTable.Handle); end; Table에서 레코드 검색 테이블에서 레코드를 검색하는 방법은 많이 있습니다. GotoKey, FindKey, GotoNearest, FindNearest 등이 있으며 이것들은 모두 인덱스가 있는 파일만 검색합니다. 우선 위의 명령을 써서 검새을 하기 위해서는 Tab.. 2023. 10. 7.
델파이 데이타베이스 기초 4 델파이 데이타베이스 데이타 베이스 관련 콤포넌트 Data Access Component 데이타엑세스 콤포넌트는 물리적인 데이타베이스를 프로그램시 사용자가 쓸수 있도록 접근할수 있게 해주는 콤포넌트들로 TDataBase, TDataSource,TTable, TQuery, TBatchMove, TSession 등이 있다. TTable 데이타베이스 테이블에 접근하기 위한 콤포넌트이다. 테이블에 접근하기 위해 TableName 프로퍼티에 테이블 이름,DatabaseName 프로퍼티에 Alias이름을 지정해 주어야 한다. 그리고 실제 사용하기 위해서는 Active를 True로 해주거나 TTable.Open 메서드를 사용하여 테이블을 활성화 시켜야 한다. 그리고, Filter 프로퍼티를 사용하여 테이블을 필터링 할.. 2023. 10. 6.
델파이 데이타베이스 기초 3 델파이 데이타베이스 SQL(Structured Qurey Language) SQL은 1970년대초 IBM에서 개발한 데이타베이스 질의용 언어로써 델파이에서는 실제 SQL언어자체를 가지고 응용프로그램을 만들거나 하는게 아니라 SQL문법으로 쓰여진 문장을 TQuery콤포넌트를 사용해서 BDE에 넘기면 BDE가 해석하여 어떤 역할을 수행합니다.(Local SQL사용시) 그리고 BDE Administrator를 사용하면 SQL문장을 마치 배치화일처럼 만들어 사용할수도 있습니다. DML(Data Manipulation Language) 데이타 베이스로 부터 원하는 레코드를 검색하거나, 추가/삭제/수정하는등의 데이타 처리를 하는 언어 DDL(Data Definition Language) 말그대로 DataBase테이.. 2023. 10. 5.
델파이 데이타베이스 기초 2 델파이 데이타베이스 무결성(Integrity) 무결성이란 데이타베이스에 저장된 데이타의 일관성(consistency)를 의미합니다. 즉 데이타 베이스 일관성을 좋게 하기 위해 나름대로 정의를 내린것들이죠. 실체(테이블) 무결성(Entity Integrity) 테이블 무결성은 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구한다. 즉 기본키가 설정되어있어야 함을 의미한다. 영역무결성(Domain Integrity) 영역무결성은 한 필드에 NULL값이 허용되는지를 결정 참조무결성(Referential Integrity) 참조무결성은 기본키(참조되는 테이블에서)와 참조 키(참조하는 테이블에서)간의 관계를 유지하는 것을 보장한다. 이것은 예를 들어 거래내역 테이블과 거래처관리 테이블이 거래처코드로 연결.. 2023. 10. 4.
델파이 데이타베이스 기초 1 델파이 데이타베이스 DataBase 개요 DataBase란? 데이타베이스는 말그대로 방대한 데이타를 효율적으로 관리하기위해 만든것입니다. Table, Field, Record, Index 데이타가 DB에 저장될때는 잘정리된 표에 집어넣는 것과 같은 방식으로 데이타를 저장합니다. 그 표가 Table이 되고 그 표의 각 항목이 Field가되고, 각 줄이 Record가 되는 것입니다. 그리고 각 줄에서 특정한 줄을 찾기위해 색인을 만들어 놓은 것이 바로 index입니다. 예를 들어 학생 성적을 관리하는 Table의 경우 ┏━━━┳━━━┳━━━┳━━━┳━━━┓ ┃학번 ┃이름 ┃ 영어 ┃수학 ┃국어 ┃ 2023. 9. 27.
델파이 리소스(Resource) 델파이 리소스(Resource) 리소스 파일 생성 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다. 이렇.. 2023. 9. 26.