miniuser_의 등록된 링크

 miniuser_로 등록된 네이버 블로그 포스트 수는 56건입니다.

[Delphi] VCL Theme 적용시 TDateTimePicker DropDown 짤림 이슈 발생시 조치사항 [내부링크]

델파이에서 제공하는 VCL Theme 몇몇 테마 사용시, TDateTimePicker을 클릭하여, DropDown이 될 떄, 디자인이 잘려보이는 이슈가 발생합니다. 예시 VCL 스타일 적용 시 캘린더 크기 문제 안녕하세요 기본 Windows 스타일의 경우는 별다른 문제 없으나, 제공하는 다른 여러 스타일을 적용 시 아래 이미지와 같이 TDateTimePicker 의 사이즈가 맞지 않아 양쪽이 잘린 채로 표출 됩니다. 캘린더 사이즈 설정 또는 관련 해결 방법에 대해 참고할만한 내용이 있다면 알려주시면 감사하겠습니다. < 스타일 변경 소스 > TStyleManager.TrySetStyle(NewStyle); < 기본 Windows 스타일 > < 다른 스타일 > welcome.devgear.co.kr 해당 이슈를 해결하려면 DropDown이 발생할 때, Windows 테마를 비활성화 해야 한다고 하며, 이를 위해서, DTM_GETMONTHCAL* 창 핸들을 가져와야 합니다. uses Wi

[Delphi] RC(Res), BRCC32를 이용한 파일정보 처리하기 [내부링크]

안녕하세요 Miniuser입니다. 오늘 너무나 일에 집중이 되지 않아, 둘러보던 중 흥미로운 정보가 있어 가져왔습니다. 주로 프로그램정보를 처리할 때에는 Rad Studio(IDE) - Project - Options - Version Info에서 파일의 버전이나 Add Key를 이용하여 처리하는데, 바로 RC(Resource Complier)를 이용해 델파이의 파일에 정보를 추가/수정할 수 있는 기능입니다. 긴말 하지않고, 바로 실습해봐요! 메모장을 열어서, 아래 내용을 복사한뒤, 파일을 RC 확장자로 저장해주세요! // 예시, CustomInfo.rc VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,100 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x9L #else FILEFLAGS 0x8L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYP

[Delphi] I/O ERROR 모음 [내부링크]

출처 : http://delphi-techie.faithweb.com/rich_text_4.html I|O ERROR Appendix A - Delphi I/O Errors Thanks goes out to Erik Martin for posting these Delphi IO errors on his web site. The following are the Windows API (and former DOS) IO errors, which are also the IO errors often returned by Delphi programs, and which are generally difficult to find reference for, and... delphi-techie.faithweb.com I/O 오류 1: // IO 오류 1L // ERROR_INVALID_FUNCTION // MessageText: // 잘못된 함수입니다. I/O 오류 2: // IO 오류 2L //

[하늘&바다] 누운 모습도 이쁨 [내부링크]

하늘왕자 바다장군겸공주

[Delphi] Mutex 사용하기 [내부링크]

오랜만에 쓰는 글이네요. 요즘 너무 바쁘고, 정신없는 날들이에요. 하루 빨리 겨울이 와서 시원하기라도 했으면 좋겠어요.. 자! 오늘은 Mutex를 사용하는 방법에 대해 알려드릴게요. 목차 Mutex란? Delphi에서 Mutex 사용하기 CreateMutex (생성) OpenMutex (조회) ReleaseMutex (소유권 삭제) Mutex를 사용한 중복실행 체크 예제 Mutex란? 간단하게 프로그래밍에서 동시 사용이 불가한 자원을 동시에 사용할 떄 발생하려고 할 떄 발생하는 이슈를 예방하기 위해 사용하는 것이라고 생각하시면 됩니다. 주로 델파이에서는 프로그램의 중복실행을 체크하기 위해 많이 사용하는 것 같습니다. Delphi에서 Mutex 사용하기 CreateMutex (Mutex 생성) https://learn.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-createmutexw HANDLE CreateMutexW( [

[Delphi] 델파이 소스파일 인코딩 UTF-8로 기본저장처리하기 [내부링크]

안녕하세요 Miniuser입니다! 프로젝트를 진행중에, Github 업로드된 파일에서 한글이 깨져보이는걸 확인하여, 조금 알아보니, 델파이 소스파일(.Pas 등)의 인코딩이 ANSI로 처리되어 발생한 이슈였습니다. 그래서 생성될 때, 조치방법을 검색해보니 레지스트리를 수정하여 처리하는 좋은 팁이 있어 공유할 겸 올립니다. 1. 레지스트리 실행 2. 다음 경로로 이동 HKEY_CURRENT_USER\Software\Embarcadero\BDS\19.0\Editor 3. 새로 만들기 > 문자열 값 클릭 4. 이름은 해당하는 언어에 맞게 입력 C#Builder: HKCUSoftwareBorlandBDS1.0Editor Delphi 8: HKCUSoftwareBorlandBDS2.0Editor 5. 값은 다음과 같이 입력 "DefaultFileFilter"="Borland.FileFilter.UTF8ToUTF8" ※ 해당 작업전 반드시 레지스트릴 값을 백업해두시길 바랍니다! ※ 10.4에서

[Delphi] 폴더 경로 가져오기 (SHGetKnownFolderPath) [내부링크]

안녕하세요 Miniuser입니다. 요즘따라 생각이 많네요.. 아무튼! 오늘은 사용자 폴더(다운로드, 동영상, 문서 등)의 폴더 경로를 가져오는 방법을 알려드리겠습니다! SHGetKnownFolderPath https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath HRESULT SHGetKnownFolderPath( [in] REFKNOWNFOLDERID rfid, // 식별코드(KNOWNFOLDERID) [in] DWORD dwFlags, // 특수 검색용 0 또는 KNOWN_FOLDER_FLAG 값 [in, optional] HANDLE hToken, // 특정사용자액세스 토큰, Nil일 경우 현재 사용자 [out] PWSTR *ppszPath // 폴더 경로 주소 ※ 경로 반환시 마지막에 '\'가 포함되지 않습니다. 예를 들어, "C:\user\Download

[Delphi] TMemIniFile(TiniFiles) 사용하여 INI 파일 관리하기 [내부링크]

안녕하세요 Miniuser입니다. 오늘 2번째 내용은 바로 TIniFile에 TMemIniFile 부분에 대해 간단한 사용법을 알려드릴게요. System.IniFiles.TMemIniFile https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.IniFiles.TMemIniFile 1.TMemIniFile 파일이란? 우선 ini 파일이란 간단하게 파일을 정보를 기록할 수 있는 포맷입니다. 세션, 키, 값으로 이루어져있으며, 다음과 같은 형식입니다. [Section_INI] INI_KEY=INI_VALUE [UserInfo] userName=Miniuser userNumber=203 userChk=0 기존 TiniFile과 TmemIniFile의 차이점은 생성시에 인코딩을 처리하여, 한글이나, 한자등의 깨짐을 방지할 수 있으며, 읽고 저장한 정보를 메모리에 복사하여, 더 빠르게 작업이 가능합니다. 그리고 기존 ini 파일과 사

[Delphi] 문자열 반복 DupeString 사용하기 [내부링크]

안녕하세요, Miniuser입니다! 오늘은 간단한 함수를 하나 가져왔습니다. System.StrUtils.DupeString https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.StrUtils.DupeString 이라는 함수인데요. 이 함수는 지정한 횟수만큼 문자열을 연결하여 반환해줍니다. 1. DupeString 선언 function DupeString(const AText: string; ACount: Integer): string; // AText : 반복 처리할 문자열 // ACount : 반복 횟수 2. DupeString 사용 예제 uses ... System.StrUtils // 추가 var sLine : String; begin sLine := '-'; sLine := DupeString(sLine, 10); // sLine = '----------'; end; 해당 함수를 몰라서, For문으로 일일히 처리

[Delphi] JPEG ERROR #53 원인 및 해결 [내부링크]

안녕하세요. Miniuser입니다. 오늘은 "Jpeg Error #53" 이라는 이슈의 원인과 해결방법에 대해 알려드릴게요. Jpeg Error #53 1. Jpeg Error #53 이란? 해당 이미지가 손상되거나, 메모리가 부족하여, 이미지를 표시할 수 없거나, 또는 웹에서 다운로드 중에 중단되는 등의 이슈로 인해, 이미지를 표시할 수 없을때, 또는, 주로 Png나 다른 파일들의 확장자를 이름바꾸기를 통해, 변환이 아닌, jpg로만 바꾼 이미지를 표시할 때도 발생합니다. 어떤 경우에는 처음에는 잘 표시되다가, 다시 불러오거나, 특정 작업 후에 해당 이슈가 발생하여, 원인을 찾는데 시간이 걸리기도 합니다. jpeg error #53 2. jpeg error #53 원인 올바른 jpg(jpeg) 확장자가 아닐 경우, 메모리가 부족하여, 이미지를 표시할 수 없을 경우 3. jpeg error #53 해결 및 조치방법 이미지 헤더 확인 (Notpad, Notepad++ 로 이미지 파일

[Delphi] 방화벽에 프로그램 등록하기 [내부링크]

안녕하세요 Miniuser입니다! 오늘은 소켓 프로그램을 베포후, 진행해야 하는 방화벽 규칙을 등록/삭제하는 방법에 대해 알아봅시다. 방화벽 규칙 설정을 Delphi로 진행하는 방법을 공유해드립니다. 해당 기능을 이용하면, 방화벽을 끄지 않아도, 별도로 프로그램을 방화벽에 등록하지 않아도, 자동으로 프로그램이 방화벽에 등록됩니다! 1. 방화벽 등록 .. implementation .. {등록 정보 RullName : 방화벽에 등록할 구분명 (주로 프로그램 파일명) RullPath : 방화벽에 등록할 프로그램 경로 } procedure AddException_Firewall(const RuleName, RulePath: String); const // 등록 유형 NET_FW_PROFILE2_PRIVATE = 2; NET_FW_PROFILE2_PUBLIC = 4; NET_FW_IP_PROTOCOL_TCP = 6; NET_FW_IP_PROTOCOL_UDP = 7; NET_FW_ACTION

[Delphi] JSON 사용하기 (System.json 이용하기) [내부링크]

안녕하세요 Miniuser입니다. 오늘은 제 머리에 희미하게나마 기억하고 있던 JSON 읽고 쓰는 법에 대해 알려드릴게요. System.JSON https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.JSON 목차 JSON 읽기 JSON 쓰기 참고사항 샘플 데이터가 다음과 같다고 할 때. { "JsonVal_STR":"VALUE" "JsonVal_INT":429 "JsonArray": [ {"ArrKey":"KEY1"}, {"ArrKey":"KEY2"}, {"ArrKey":"KEY3"} ] } 1.JSON 읽기 다음과 같이 파싱할 수 있습니다. uses .. System.JSON // 추가 .. procedure JSONParse(JSON_SAMPLE:String); var JsonObj : TJsonObject; JsonArr : TJsonArray; JsonArrObj : TJsonObject; json_Str : Stri

강아지가 뭔가 잘못했을때. [내부링크]

사실 간식을 바라보는데, 간식을 너무 높게 들어서, 뭔가 잘못했을 떄 사진이 나왔네요ㅋㅋㅋㅋㅋ

[Delphi] 이스터에그 (Easter Egg) [내부링크]

Rad Studio에도 이스터 에그가 있다고 해서, 공유합니다. Help - About ... Delphi 클릭 Alt를 누른 상태에서 아래 단어를 입력하면 됩니다. Team : 개발진들 리스트가 출력되며, 더블클릭시 베타버전의 스플래시화면이 표시됩니다. KUDOS 개발에 도움을 주신 분들이 출력됩니다. GUNGLA 원숭이가 파도를 타는(Tequila Joe Monkey) 이미지가 출력됩니다. RAD 버전별로 이스터 에그가 정리되어 있는 사이트가 있어, 공유합니다. 아래 링크를 참고해주세요~ 참고 사이트 : http://blong.com/Undocumented/Delphi10Seattle.htm Delphi 10 Seattle Easter Eggs Delphi 10 Seattle Easter Eggs Invoke the About box with Help | About... , then hold down Alt whilst typing TEAM. This produces a scro

[하늘&바다] 꿀잠 [내부링크]

미쳤어요. 자는모습도 이쁘다.

[Delphi] 이미지 헤더 체크하기 (부제 : JPEG Error #53 해결하기) [내부링크]

안녕하세요 Miniuser입니다. 전에 Jpeg Error #53에 대해, 간단한 원인을 알아봤는데요, (참고 사이트 : https://blog.naver.com/miniuser_/223064254446) [Delphi] JPEG ERROR #53 원인 및 해결 안녕하세요. Miniuser입니다. 오늘은 "Jpeg Error #53" 이라는 이슈의 원인과 해결방법에 대... blog.naver.com 오늘은 이미지가 PNG 유형인데, JPEG 확장자로 되어 있어서 "Jpeg Error #53"에러가 발생할 때 이미지를 체크하여, 프로그램 내부에서 수정/처리하는 방법을 알려드릴게요. 1.이미지 유형 알아내기 FUNCTION GetImageType(sImagePath : String): String; var ms : TMemoryStream; aStr : AnsiString; begin ms := TMemoryStream.Create; try // 이미지 불러오기 ms.LoadFormF

[Delphi] 윈도우 알림(TNotification) 예제 [내부링크]

안녕하세요 배울길이 많은 Miniuser입니다/ 오늘은 Delphi에 TNotificationCenter과 TNotification을 이용한 윈도우 알림 보내기 샘플 프로그램을 만들어보았습니다. 참고사항 윈도우 8 이상버전부터 사용이 가능합니다. 알림센터에 알림 유무가 종료되어 있을경우, 정상적으로 처리되지 않습니다. 예약 관련 부분()은 작동이 되지 않고 있어, 아직 테스트 진행중입니다. 2. 소스 코드 Uses .. System.Notification // 추가 // 폼에 NotificationCenter 올리거나, 동적생성 procedure BtnEvt(Sender : TObject); var Notice: TNotification; begin // 새 알림 생성 or 알림 덮어쓰기 Notice := NotificationCenter.CreateNotification; with Notice do begin Name := 'Window_Notification_Sample'; Ti

[Delphi] 동적배열(Dynamic Array) INSERT, DELETE, Concat 사용예제 [내부링크]

안녕하세요~! 델파이 배우는 Miniuser입니다. 오늘은 Dynamic Array에서 XE7 버전 이후부터 사용가능한 Insert, Delete, Concat 에 간단한 내용과 예제를 알려드릴게요. 동적배열 직접연산(Insert, Delete, Concat)은 XE7 이상버전부터 테스트가 가능합니다! https://opentutorials.org/course/3108/19301 1. System.Insert [정의] procedure Insert ( Source: <string or dynamic array>; var Dest: <string or dynamic array>; Index: Integer ); // 참고 사이트 : https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.Insert Dest에 Index부터 Source 값을 추가합니다. [사용 예제] // ArrTest : array of String; // a

[DELPHI, FireDAC] 쿼리에 레코드 총 수량 가져오기 [내부링크]

안녕하세요 Miniuser입니다. 오늘은 FireDAC를 사용할때, 검색된 퀴리수를 가져오는 부분에 대해 알려드릴게요! 사실 간단하게 FDQuect.SQL.TEXT := 'SELECT COUNT(*) FROM tableName'; .. While Not FDQuery.Eof do begin TotalCount := FieldByName('COUNT').AsInteger; end; 이런 식으로 해서 주로 사용하는데, FDQuery 내부에 따로 지원하는 부분이 있어요. 바로 Data.DB.TDataSet.RecordCount Data.DB.TDataSet.RecordCount - RAD Studio API Documentation (embarcadero.com) [사용 예제] try // 기본적인 RecordCountMode인 cmVisible의 경우, 캐시에 있는 레코드 수를 가져오는데, // 기본 크기가 50되어 있어, 50개 이상의 행이 있을경우, 50으로 반환되니, // 작업 전

[Delphi] Naver Open API를 이용해 파파고번역(Papago Translation) 연동하기 [내부링크]

안녕하세요! 열심히 델파이를 찾아보고 배우고 있는 Miniuser입니다. 오늘은 Naver OPEN API (https://developers.naver.com/main/)에 있는, NAVER Developers 네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음성인식, 음성합성 등이 있습니다. developers.naver.com "Papago 번역"을 사용해보려고 합니다. https://developers.naver.com/docs/papago/papago-nmt-api-reference.md 목차 네이버 개발자 센터 앱 등록하기 delphi 프로그래밍 통신 테스트 네이버 개발자 센터 앱 등록하기 (인증키 받기) 1. 네이버 개발자 센터로 이동하여, 우측 상단에 "로그인" 버튼 클릭하여 로그인 진행 2. 로그인 후 "Applic

[Delphi] TDownloadURL 을 이용한 파일 다운로드 [내부링크]

안녕하세요 Delphi를 배우는 Miniuser입니다. 오늘 두번째 주제는 TDownloadURL을 사용한 파일 다운로드를 구현해보는 것입니다! TDownloadURL https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.ExtActns.TDownLoadURL 정의 TDownloadURL은 지정된 URL의 내용을 파일에 저장하기 위한 표준 작업이라고 합니다. OnDownloadProgress 이벤트를 통해, TProgressBar와 연동할 수 있습니다. 다중 다운로드를 지원하지 않습니다. 이벤트 정보 이벤트명 파라미터 설명 BeforeDownload Sender : TObject 다운로드 시작시 발생 AfterDownload Sender : TObject 다운로드 종료시 발생 OnDownloadProgress Sender: TDownLoadURL Progress, ProgressMax: Cardinal StatusCode: TURLDow

[Delphi] Margin, padding 이용하기 [내부링크]

안녕하세요~ Miniuser입니다. 요즘 벚꽃이 핀 봄이 오니, 놀러다니고 싶네요. 아무튼 오늘은 델파이에 간단한 디자인 관련 부분에 대해 알려드릴게요. Margins, Padding Margins 정의 : 컨트롤의 외부여백을 지정(TControls(TLabel, TPanel, TImage 등등) ) 사용법 : 컨트롤의 AlignWithMargins : True Align을 AlNone이 아닌, 다른 값(alTop, alLeft, alClient 등)으로 지정 사용예제 procedure FormShow(Sender : TObject); begin Label1.Align := alTop; Label1.AlgignWithMargins := True; LAbel1.Margins.Left := 0; Label2.Align := alTop; Label2.AlgignWithMargins := True; LAbel2.Margins.Left := 10; end; 적용 이미지 2. Padding 정

[Delphi] 지뢰찾기 [내부링크]

전에 만들어놓고, 정작 블로그에는 안올린 지뢰찾기입니다. 예전 윈도우에 있던 프로그램이 생각나서 만들었습니다. 첨부파일 Minesweeper.exe 파일 다운로드 2023-02-14 업데이트 지뢰 예상 지점 처리후, 라벨(숫자) 우클릭시 자동클릭기능 추가 2023-02-20 Fix 지뢰 예상 지점 처리 이벤트 처리이슈 수정

[Firebird] DB 연결시 "unsupported on-disk structrue for file..." 이슈 처리방법 [내부링크]

Firebird 를 사용해서 DB 연결도중 unsupported on-disk structrue for file... Firebird 라는 연결실패 메세지가 발생하는 경우가 있습니다. 원인은 다음 2가지 중에 하나에 해당합니다. 1. Firebird 데이터베이스가 아닌, 다른 DBMS 파일에 엑세를 시도할때 예를 들어 6.0 이상의 Interbase 파일을 연결하려고 할때. 2. 설치된 Fireibrd서버보다 높은 버전의 Firebird DB에 접속시도시 발생합니다. 예를 들어 Firebird 3.0으로 DB를 생성 작업하고, Firebird 1.5나, 2.0 등 낮은 버전으로 엑세스 시도시 [해결방법] Firebird DB와 동일한 버전의 파이어버드를 설치합니다. 구버전을 그대로 사용해야 할 경우, Firebird를 이전 버전에 맞게 재작업 참고사이트: https://www.firebirdfaq.org/faq80/ Unsupported on-disk structure for fil

[Delphi] 델파이 터치 키보드 [내부링크]

안녕하세요 Miniuser입니다! 이제 할일이 없으니, 심심한 참에 터치 키보드를 만들었습니다. 사용하실 분들은 첨부파일에 파일 다운받으시면 됩니다~ 첨부파일 Project_Keyboard.exe 파일 다운로드 터치 키보드 이미지 2023-01-09 업데이트 길게 누를시 자동 클릭 기능 몇몇 특수문자 처리이슈 수정

[Delphi] TIBDatabase 'unavailable database' 오류 발생시 대처법 [내부링크]

firebird 서비스 실행 유무 확인 제어판 - Firebird server Manager 실행 - 동작중인지 확인 or 작업 관리자에서 firebird 실행유무 확인 2. DLL 복사 FireBird 연동 중 해당 오류 발생시 C:\Program Files(x86)\Firebird\FireBird_2_X\bin 폴더 안에 fbclient.dll 복사 실행파일 경로에 붙여넣고 이름을 gds32.dll로 변경

[Delphi] idHTTP Socket Error 10054 (Connection Reset by Peer)발생시 처리 [내부링크]

Socket Error 10054 "Connection reset by peer" 에러란? 통신측에서 연결을 강제로 종료할 때 발생한다고 합니다. 즉, 상대측에서 네트워크 이슈, 호스트 정지 등의 이슈 또는 악성요청으로 처리되어 물리적으로 종료하는 경우에 발생하는 메세지입니다. Socket Error 10054 "Connection reset by peer" 해결방법 IdHttp 통신 중 Socket Error 10054 발생시 IdHttp.Request.Connection 속성의 값을 'Keep-Alive' 값 처리 후 진행 Idhttp.Request.UserAgnet 속성의 값을 'Mozilla/3.0 (compatible; Indy Library)' 외의 값으로 변경 (예시 : idhttp.request.userAgent :='a') // 상당수의 악성 코드의 UserAgent의 기본값인 'Mozilla/3.0 (compatible; Indy Library)'와 같은 값 이어서

[Delphi] SendMessage 데이터 짤림 발생시 [내부링크]

기존 dwData := 0; cbData := (Length(AnsiString(Edit1.Text))) + 1; lpData := PChar(Edit1.Text); 변경 dwData := 0; cbData := (Length(AnsiString(Edit1.Text)) * SizeOf(char)) + 1; lpData := PChar(Edit1.Text); delphi 2009 이후 유니코드 처리로 인한 문제 참고 사이트 : http://borlandforum.com/impboard/impboard.dll?action=read&db=del_qna&no=15505 볼랜드포럼: Re:Re:자답과 추가 다른 질문 64비트라서 그런 것이 아니라 델파이 2009 부터 유니코드 기반으로 변경이 되었습니다. 윈도우 api가 ansi string 과 wide string 으로 구분되어 있습니다. MessageBoxA, MessageBoxW 식으로 말이지요. MessageBox로 예를 들면 델파이

[Delphi] ZipMaster Progress 연동 [내부링크]

ZipMaster "onProgress" 이벤트에 처리 procedure TMainform.ZipMaster1Progress(Sender: TObject; details: TZMProgressDetails); begin case detauks.Order of TotalSize2Process: // 총 크기 begin lTotalSize.Caption := ' Size : ' + IntToStr((details.TotalSize Div 1024)) + ' Kb'; with ProgressBar1 do // 개별 파일별 처리율 begin Position := 1; MAX := 100; end; with ProgressBar2 do // 전체 압축 처리율 begin MAX := 100; end; end; TotalFiles2Process: // 총 파일 개수 begin lTotlaCount.Caption := IntToStr(details.TotalCount) + ' files'; end

[Delphi] 프로그램 관리자 권한 처리 [내부링크]

Rad Studio 10.2 기준 Project - Option - Application - Manifest File - Execution Level 에서 Require Adminstartor 선택 AsInvoker : 프로세스 생성과 동일한 토큰으로 실행하려는 프로세스를 시작한다. (기본) HighestAvailable : 권한 상승 요청하지만 일반 유저 권한으로 시작 RequireAdminStrator : 권한 상승 요청, 일반 유저는 Login Dialog를 받게 된다. 관리자권한으로만 실행됨 UI Access : 선택시 관리자 실행유무 선택 화면 표시됨. 참고 사이트 : https://sb.pe.kr/1641 [개발/delphi] Vista, Windows 7 UAC (User Access Control) 를 델파이에서 설정하기 Vista, Windows 7 UAC (User Access Control) 를 델파이에서 설정하기 델파이나 그 외 개발툴로 작성되는 윈도우즈 어플리

[Delphi] Window Media Player (동영상 재생) [내부링크]

컴포넌트 등록 방법 1. 델파이 상단 툴 - Componet - Import Component... 클릭 2. "VCL for Delphi32" 선택 후 NEXT 3. "Import ActiveX Control" 선택 후 NEXT 4. Registerred ActiveX Controls 화면에서 리스트 하단에 "Windows Media Player" 선택 후 NEXT 5. Component 화면에서 "Generate Component Wrappers" 체크 후 다음 6. Install to new Package 선택 후 다음 7. PKG이 생성될 경로와 Description 선택 및 입력후 "Finish" 클릭하여 완료 8. VCL을 참조 프레임워크로 패키지에 추가할건지 메세지 창 표시되면 "YES" 클릭 9. 정상적으로 다운로드 되는지 확인 (Tool Palette에 Windows Media Player가 있는지 확인) 10. 델파이 상단 툴 - Project - Options -

[Delphi][Spy++] 카카오 채팅방 문자 보내기 [내부링크]

샘플 소스 procedure TForm8.Button1Click(Sender: TObject); var hKakaoHandle, hKakaoMSGHandle: THandle; DataStruct: CopyDataStruct; sMsg: String; begin sMsg := Edit1.Text; hKakaoHandle := FindWindow(nil, Edit2.Text); // 채팅방 명 if hKakaoHandle <> 0 then begin hKakaoMSGHandle := FindWindowEx(hKakaoHandle, 0, 'RICHEDIT50W', nil); if hKakaoMSGHandle <> 0 then begin SendMessage(hKakaoMSGHandle, WM_SETTEXT, 0, LParam(PChar(sMsg))); PostMessage(hKakaoMSGHandle, WM_KEYDOWN, VK_RETURN, 0); PostMessage(hKakaoMSG

Rad Studio Debug 풀스크린 막기 [내부링크]

Rad Studio 컴파일시 (F9) 메인 모니터로 풀 스크린 처리가 되는데, Rad Studio 상단 Default Layout 콤보박스 우측에 "Set Debug Desktop" 버튼 클릭후 값을 None으로 지정하면 컴파일을 해도 그대로 남아있음

[Delphi&Apache] Delphi Apache DLL 생성 및 등록 [내부링크]

1. DLL 만들기 1). 프로젝트 생성 (File - New - Other - Web Server Application 선택) 2). 서버 운영체제(OS) 선택 Window or Linux 3). Apache dynamic link module 2. DLL 아파치 서버에 등록하기 (Apache24 기준) 1). C:\아파치 서버 설치경로\Modules 폴더 안에 생성한 DLL 파일 넣기 2). C:\아파치 서버 설치경로\conf 폴더에 "httpd.conf" 파일 실행 3). "Dynamic Shard Object (DSO) Support" 밑에 아래 문구 추가 LoadModule (모듈명) modules/(모듈파일명).dll - 모듈명 : DLL 프로젝트파일에서 프로젝트 우클릭 View Source 후 "exports" 에 적혀있는 문자열값 - 모듈파일명 : DLL 프로젝트명 예시 : LoadModule apachetest_module modules/apachetest.dll

[Firebird-SQL] 시퀀스(Sequence (or Generator)) [내부링크]

참고 기존에는 Generator 를 사용하였으나, Firebird 2이상부터는 Sequence로 작업하기를 추천 1. 시퀀스(or Generator) 생성 CREATE SEQUENCE [시퀀스 이름] // 예시 CREATE SEQUENCE SEQ_TEST; // 또는 Generator 사용시 CREATE GENERATOR GEN_TEST; 2. 시퀀스(or Generator) 수정(초기화) ALTER SEQUENCE [시퀀스 이름] RESTART WITH [초기값] // 예시 SEQ_TEST를 0으로 초기화 ALTER SEQUENCE SEQ_TEST RESTART WITH 0; // 또는 Generator 사용시 // 0으로 초기화 SET GENERATOR GEN_TEST TO 0 시퀀스 수정을 자주할경우, 데이터베이스에 좋지 않으니, 웬만하면 시퀀스 생성 이후에만 사용하여 초기값을 설정하는데에만 사용하는게 좋습니다. 3. 시퀀스(or Generator) 삭제 DROP SEQUENC

[Firebird-SQL] 트리거 이용 순번 증가 처리 [내부링크]

Firebird 는 별도로 Auto Increment 가 없기 때문에, 시퀀스와 트리거를 이용 1. 테스트 정보 생성 // 테스트 Table 생성 CREATE TABLE AI_TEST ( AIseq INT PRIMARY KEY, T1 VARCHAR(200) NOT NULL ); // 시퀀스 생성 CREATE SEQUENCE SEQ_AI_TEST; SET TERM ~ ; // 종료 구문을 ;에서 ~으로 변경 // 트리거 생성 CREATE TRIGGER TRG_AI_TEST FOR AI_TEST ACTIVE BEFORE INSERT POSITION 1 AS BEGIN IF (new.AIseq is null) THEN new.AIseq = NEXT VALUE FOR SEQ_AI_TEST; END ~ SET TERM ; ~ 참고 사이트 : https://firebirdsql.org/refdocs/langrefupd21-ddl-trigger.html TRIGGER CREATE TRIGGER

[Delphi] SetBounds [내부링크]

SetBounds() : 컨트롤의 크기와 위치를 수정할 때 사용합니다. 델파이에서 컨트롤의 크기나 위치를 조절할때(SetWidth, SetHeight, SetTop, SetLeft 등), SetBounds를 호출하는데, 만약 해당 컨트롤을 위치나 크기를 수정할경우, 주로 아래 방식으로 많이 진행하는데, with TLabel.Create(Self) do begin Left := 100; Top := 150; Width := 200; Height := 400; end; 위와 같이 사용할경우, SetBounds를 여러번 호출하기 때문에, 여러번 화면갱신을 진행하게 됨. 즉 SetBounds를 사용하여 한번에 처리하는게 좋다고 함. // 구성 procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; // 예제 with TLabel.Create(Self) do begin SetBoudns(100, 150, 200, 400);

[Delphi] idHTTP GET 한글전송 깨짐 Encode UTF-8 [내부링크]

idHTTP을 이용하여 GET 파라미터에 한글전송이 Encode을 해줘야 하는데, 간혹 Delphi에서 제공하는 encode 함수가 정상적으로 되지 않을경우 샘플 프로그램을 참고하여, 사용해주세요. function TForm_Encode.EncodeURIComponent(const ASrc: string): UTF8String; const HexMap: UTF8String = '0123456789ABCDEF'; function IsSafeChar(ch: Integer): Boolean; begin if (ch >= 48) and (ch <= 57) then Result := True // 0-9 else if (ch >= 65) and (ch <= 90) then Result := True // A-Z else if (ch >= 97) and (ch <= 122) then Result := True // a-z else if (ch = 33) then Result := True //

Delphi GIF 재생시 오류 대처법 [내부링크]

Delphi GIF 재생시 오류 대처법 가끔 잘 사용하던 프로젝트에서 갑자기 Gif 쪽에서 에러가 발생하는 경우, (Image_Gif.Picture.Graphic AS TGifimage).Animate := True; <== 여기에서 Access 오류나, Invalid Typecase 등등의 오류 아래 방법중에 편한 방법을 찾아 적용해주시면 됩니다. 1. ClassName, UnRegisterGraphicClass을 사용하기 TPicture의 TGraphic의 ClassName이 TGifImage이어야 하지만, 간혹 다른 클래스가 표시되어 오류가 발생할 경우가 있습니다. 그럴 경우 "TPicture.UnRegisterGraphicClass"를 이용하여 주시면 됩니다. 저의 경우 TImagingGIF, TImagingGraphic가 등록되어 있어, 위 2개의 정보를 해제후 정상작동 되었습니다. TPicture.UnRegisterGraphicClass(TImagingGIF); TPic

[Delphi] 외부 프로그램 Panel에 넣기 [내부링크]

Winapi.Windows.SetParent 를 이용하면 됩니다. 예제 // 외부 프로그램을 넣을 Panel의 핸들값 p_Handle := Panel1.Handle; // 넣을 프로그램 실행 (선택) ShellExecute(Self.Handle, 'open', 'notepad', nil, nil, SW_MINIMIZE); Sleep(1000); Panel1.Caption := ''; exe_Handle := FindWindow(PChar('notepad'), nil); // 넣을 프로그램에 핸들 구하기 if exe_Handle = 0 then begin Panel1.Caption := '메모장을 찾을 수 없습니다. 다시 시도해주세요.'; end else begin Winapi.Windows.SetParent(exe_Handle, p_Handle); SetWindowPos(exe_Handle, 0, 0, 0, Panel1.Width, Panel1.Height, SWP_ASYNCWIND

[Delphi] 폼 이동, 사이즈 변경 [내부링크]

Form Border Style이 bsNone일 떄 사이즈 변경처리 type TForm3 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } protected procedure CreateParams(var Params: TCreateParams); override; end; var Form3: TForm3; implementation {$R *.dfm} { TForm3 } procedure TForm3.CreateParams(var Params: TCreateParams); begin inherited; // 폼 마우스로 사이즈 변경 // Border Style bsNone에서 사용 Params.ExStyle := Pa

[Delphi, FMX] 파이어몽키 SendMessage WM_COPYDATA 받기 [내부링크]

FMX는 VCL과 다르게 멀티 플랫폼 구조로 되어 있어서, 기존에 VCL에서 사용하던 SendMessage가 동일하게 작동하지 않는다고 합니다. 메세지 송신이 다음과 같다고 가정할때. SendMessage(FMXHandle, WM_COPYDATA, Self.Handle, Integer(@CopyDataStruct)); FMX 수신 ※ FireMonkey는 FindWindow 처리시 클래스 명 앞에 FM 이 추가됩니다. 예시 : TForm1 => FMTForm1 ※ Rad Studio 10.2 기준 FireMonkey - TForm - BorderStyle이 None일 경우 작동 안됩니다. uses Winapi.Windows, Winapi.Messages, FMX.Platform.Win // 추가해주세요~ ...; type TForm3 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender:

[Delphi] 윈도우 배율 및 레이아웃 사이즈에 따른 프로그램 깨짐 막기 [내부링크]

윈도우 설정 - 디스플레이 - 배율 및 레이아웃 - "텍스트, 앱 및 기타 항목의 크기 변경" 항목이 100%가 아닌 125% 150% 일 경우, 폰트나 프로그램의 이미지가 깨지는 이슈가 발생하는데, 델파이 폼 속성에 Scaled의 속성을 False로 변경해주면, 배율에 상관없이 그대로 표시됩니다.

[Delphi] IP 정규식 [내부링크]

uses RegularExpressions; // <-- 추가해주세요 // 선언 RegIPAddress := '\b' + // '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' + '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' + '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' + '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'; // 예제 if TRegEx.IsMatch('비교할 IP 입력', RegIPAddress) = False then begin PcmsMSG('IP 형식이 맞는지 확인해주세요.', 2); Exit; end;

[Delphi] 크로미움 설치 및 사용하기 (CEF4Delphi) [내부링크]

internet Explorer 11이 2022년 6월 15일부터 지원을 종료한다고 해서, 기존에 WebView로 사용하던 TWebBrowser를 크로미움(Chromium)으로 변경하려고 한다. https://docs.microsoft.com/ko-kr/lifecycle/announcements/internet-explorer-11-end-of-support 특정 운영 체제에 대한 Internet Explorer 11 데스크톱 애플리케이션 지원 종료 Internet Explorer 11 지원 종료 발표. docs.microsoft.com 델파이에서 크로미움 설치하는 법과 사용방법에 대해 알려드릴게요. 1. 델파이 for 크로미움(CEF4Delphi) 설치하기 크로미움 및 CEF 바이너리 다운로드 GIT 사이트 : https://github.com/salvadordf/CEF4Delphi 패키지 다운로드 위 사이트로 이동후 Code -> Download Zip 클릭하여 프로젝트 다운로드

[Delphi] Panel 테두리 없애기 [내부링크]

delphi VCL에서 기본 제공하는 TPanel은 테두리가 표시되는데, 지우고 싶을 때에는 BevelOuter옵션을 "bvNone" 변경해주시면 됩니다. with Panel1 do begin BevelOuter := bvNone; end; TScrollBox의 경우 BorderStyle을 bsNone으로 해주시면 됩니다. 참고 사이트 : https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.ExtCtrls.TCustomPanel.BevelWidth Vcl.ExtCtrls.TCustomPanel.BevelWidth - RAD Studio API Documentation 11.0 release available - Learn More! Vcl.ExtCtrls.TCustomPanel.BevelWidth navigation Up to Parent: TCustomPanel Delphi property BevelWidth : TBevelWidth

[Delphi] IdHTTP POST처리중 "no mapping for the unicode..." 에러 처리방법 [내부링크]

Indy HTTP를 이용하여 사용하던 도중 "no mapping for the unicode character exists in the target multi-byte code page" 에러가 발생하는 경우, Post 요청문에 한글(or 한자 등)이 웹페이지에서 깨져서, 발생하는 것이며, Encoding을 해당 웹페이지에 맞는 걸로 변경해주면 정상적으로 처리가 가능합니다. var HTTP_Encoding : TEncoding; ms : TMemoryStream; ss : TStringStream; begin HTTP_Encoding := TEncoding.UTF8 // 처리할 웹페이지에 맞는 인코딩으로 해주시면 됩니다. ss := TstringStream.Create(ReqText, HTTP_Encoding); ms := TMemoryStream.Create; try try idHTTP1.Request.ContentType := 'applicaion/json'; idHTTP1.Re

[Firebird-SQL] 테이블 정보 조회 [내부링크]

테이블 컬럼, 컬럼유형 확인 select // 컬럼명 t1.rdb$Field_name, // 컬럼유형 decode(t2.rdb$field_type, 7, 'smallint', 8, 'integer', 10, 'float', 12, 'date', 13, 'time', 14, 'char', 16, 'bigint', 27, 'double precision', 35, 'timestamp', 37, 'varchar', 261, 'blob' ), t2.rdb$field_length from rdb$relation_fields t1 join rdb$fields t2 ON t2.rdb$field_name = t1.rdb$field_source where t1.rdb$relation_name='TABLE_NAME' 참고 사이트 : https://stackoverflow.com/questions/12070162/how-can-i-get-the-table-description-fields-and-typ

[FireDAC - Firebird] Array DML 대량 입력 [내부링크]

델파이에서 제공하는 FireDAC을 이용하여 Firebird와 연동후 대량 입력 처리에 대해, Array DML 이라는 좋은 게 있어서 정리합니다. Array DML이란? 각 매개변수에 동일한 배열을 설정한 다음, 각 행에 대해 한번씩 명령을 실행하도록 DBMS에 전송, 해당 기술을 이용하면, 통신량을 줄이고 DBMS가 명령 실행을 스트리밍하게 하여 실행 시간을 단축합니다. 2. 사용 방법 (Firebird 2.1 기준입니다.) var arrMAX : Integer; // 입력할 크기 i, j : integer; with FDQuery1 do begin arrMAX := 999; if Active then Active := False; SQL.CLEAR; // 참고 꼭 SQL 문이 먼저 입력. 후에 입력시 out of range 발생 SQL.Text := 'INSERT INTO TEST_TBL (c1, c2, c3) VALUES(:v1, :v2, v3)'; Params.ArraySi

[Delphi] 소스 정렬 여백 넓히기 [내부링크]

Delphi 2010 이후로 소스 정렬 기준이 추가되어, Ctrl + D 키를 입력시 정렬하는 기능을 사용할 수 있습니다. 그런데 기본정렬 사용시 자동 줄바꿈이 처리되는 부분이 넓지 않아, 소스가 좌우로 길경우, 더 복잡하게 변경되는 경우가 있습니다. 여백을 넓히려면 Delphi 10.2 기준 Tools -> Options -> Formatter -> Delphi -> Line breaks 에서 General 항목에 "Right margin" 여백을 값을 늘려주시면 됩니다. (기본 80)

[Delphi]ShellExecute Edge 실행 [내부링크]

uses ShellAPI // 추가 .. begin ShellExecute(HANDLE_FLAG_INHERIT, 'Open', Pchar('"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge"'), 'www.naver.com', nil, SW_SHOWMAXIMIZED); end;

[Delphi] Dialog Execute 후 프로그램 키보드, 마우스 포커스 안됨의 건 [내부링크]

안녕하세요 오랜만에 다시 글을 쓰네요. 이번에 새 프로젝트로 인해, 바쁘게 일하던 중에 특이한 이슈가 있어 공유해드릴려고 합니다. 접수내용. 모달 폼에서 TColorDialog 호출후 (마우스, 키보드)포커스 안됨 원인 모달 폼에서 TColorDialog.execute 처리 후 Main 폼에 "onDeactivate" 이벤트가 실행되어, 해당 이벤트 "BringWindowToTop(Self.Handle);"가 처리되어 발생한 것이었습니다. 특이사항은, 다른 프로젝트에서는 모달 폼에서 Dialog.Execute 처리후에 Main 폼에 "onDeactivate" 이벤트가 처리되지 않으나, 해당 프로젝트에서만 실행됨 위 특이사항은 아직 확인중입니다. 조치방법.1 메인폼에 메세지 주석처리 후 정상작동 확인완료. 다른 분들도 위와 같은 동일 이슈가 있으면 "BringWindowToTop"을 사용하는지 확인해주세요~ 읽어주셔서 감사합니다.

[Delphi] 색상 (BGR, RGB, R,G,B) 변환하기 [내부링크]

안녕하세요 Miniuser입니다. 올해 프로젝트를 모두 마무리해가며, 드디어 새해를 앞두고 다시 돌아왔습니다! 오늘은 간단한 색상코드 변환에 대해, 가져왔습니다. BGR, RGB 또는 각 색상코드별로 각 값을 변환하는 기능입니다. var r,g,b : Byte; ... {BGR} // BGR to R, G, B R := GetRValue(StringToColor(Color)); G := GetGValue(StringToColor(Color)); B := GetBValue(StringToColor(Color)); // BGR to Color RGBColor := '#' + IntToHex(R) + IntToHex(B) + IntToHex(B); //------------------------------------------------------------ {RGB} // RGB to BGR R := StrToIntDef('$' + Copy(Edit_RGB.Text, 2, 2), 0);

귀염둥이 우리집 닥스훈트들 [내부링크]

언제나 귀엽고 사랑스러운 우리 하늘 바다 덕분에, 오늘도 회사에서 열심히 일한답니다. 항상 건강하고, 행복하자

오늘따라 더 이쁜것들 [내부링크]

하늘&바다(강아지) 자랑 오늘따라 더 이쁜것들 MiniUser 23시간 전 이웃추가 본문 기타 기능 바다공주 하늘이 귀여움 그 자 ㅔ