Delphi/C++Builder 썸네일형 리스트형 Delphi, C++Builder 64bit 실행 시 "Unable to ..." 오류 대응방법 최근 64bit용 어플리케이션 개발이 잦아지고 있습니다. 델파이와 C++빌더에서 64비트 개발 시 "Unable to create process." 오류가 발생해 정보를 찾다가 좋은 정보가 있어 공유합니다. 원글 - http://jsf3rd.blog.me/202981750[색즉시공 공즉사색] 딸기(jsf3rd)님 블로그입니다. 좋은 정보가 아주 많습니다. 1번 오류 - Unable to scan program's header. 2번 오류 - Unable to create process. ------------------------------------------------------ 델파이 버전은 XE5 Update2 입니다. 위 두 오류는 델파이 버전에 관계없이 종종 나오는듯 하더군요.... 하여튼, .. 더보기 FastReport 4 VCL(Embarcadero Edition) 설치 오류 우회방법 RAD Studio XE6 구매시 함께 제공되는 FastReport 4 VCL 버전이 한국어 운영체제에서 설치할 경우 중간에 글자가 깨지는 오류 메시지가 나오며 설치가 되지 않는 이슈가 발생했습니다. 패스트 레포트사에 요청해 다음버전에서 패치를 약속 받았지만, 그 이전에 사용해야 하시는 분들을 위해 파이어몽키 네이버 까페에 올라온 글을 안내해 드립니다. 이하 카페의 글입니다. 방명록에 방문하셔서 직접 알려주신 가시님께 감사인사 드립니다.http://cafe.naver.com/delphifmx.cafe?iframe_url=/ArticleRead.nhn%3Fclubid=24533623%26articleid=392%26referrerAllArticles=true FastReport VCL 4 버젼 설치시 Fo.. 더보기 JSON to Object 한줄이면 됩니다. 신입때 잘몰라 헤메고 있으면, 연구소장님이 한마디 하셨어요. 이렇게 저렇게 한줄이면 되겠네~ 그때는 참 야속했습니다. -_-); 근데 JSON을 Object(객체)로 바꾸는 작업은 정말 한줄이면 되네요. (파싱하는 반복작업을 많이 줄이고, 자동화하는데 참고하면 좋을 것 같습니다.) uses REST.JSON; // Also new System.JSON procedure TForm1.Button1Click(Sender: TObject); var Foo: TFoo; begin Foo := TFoo.Create; try Foo.Foo := 'Hello World'; Foo.Fee := 42; Memo1.Lines.Text := TJson.ObjectToJsonString(Foo); finally Foo.Fre.. 더보기 델파이 IDE 상에서 Github 소스 바로사용하기 최근 소스관리 시스템으로 Github가 많이 사용되고 있습니다. 델파이 오픈소스도 Github를 많이 이용하는데요.git client 소프트웨어를 이용하는 방식과 ZIP 파일 다운로드 방식(우측하단 Download ZIP 버튼클릭)으로 많이 사용하셨을 겁니다. Jim McKeeth가 델파이 IDE 상에서 Github 소스코드를 사용할 수 있는 유용한 팀을 공개하여 소개해드립니다.Github에서 다양한 인터페이스를 제공하는데 그중 Subversion 인터페이스를 이용해 IDE에서 사용하는 방식입니다. http://delphi.org/2014/05/clone-from-github-in-delphi/ 간단히 설명해 드리면Checkout URL을 Subversion으로 변경Subversion URL로 델파이 I.. 더보기 RAD Studio IDE의 소스코드 창과 폼 디자이너창 분리하기 Delphi 7등과 같이 소스창과 폼디자이너창을 분리하는 방법입니다. 1, Classic Undocked로 Docking 분리 2, Tools > Options > Envrionment > VCL Designer 선택 후 Embedded designer 선택해제(만약, 해당 메뉴가 없을 경우 레지스트리 변경 : 최신버전에서 사라짐)레지스트리 이용하여 설정 HKEY_CURRENT_USER\Software\Embarcadero\BDS\14.0\Form Design - 14.0은 RAD Studio 버전Embedded Designer - False로 변경3, IDE 재구동 더보기 RAD Studio 64bit 디버깅 시 "unable to create process" 오류 메시지가 나오는 경우 대처방안 RAD Studio(Delphi, C++Builder)에서 64bit로 Target platform을 잡고 디버깅(F9) 시 일부 사용자에게 위와 같은 메시지가 표시되면 디버깅모드로 진입이 되지 않는 경우가 발생합니다.(Run without debugging은 정상 동작) 위의 오류가 발생하는 경우 대처방안입니다. 32 bit OS가 설치된 윈도우로 64bit 타겟 실행 시http://docwiki.embarcadero.com/RADStudio/XE5/en/64-bit_Windows_Hello_World_Application_(Delphi_and_C%2B%2B)관리자 권한으로 RAD Studio 실행일부 권한이 없는 디렉토리에 실행파일을 생성하지 못할 수 있습니다.Embarcadero Debugger K.. 더보기 델파이 오류 메시지 한글로 보기 개발하다보면 참으로 자주 만나는 것이 에러 메시지이지만, 가끔 발생하는 에러는 도무지 어쩌라는 것인지 이해 되지 않을 때가 종종있습니다. 아래 링크를 확인하시면, 델파이에서 발생하는 오류 메시지를 한글로 확인하실 수 있습니다.에러에서 발생하는 메시지 (E1038 ~~~~~)에서 앞의 코드로 검색하시면 해당하는 메시지를 쉽게 찾을 수 있습니다. http://goo.gl/c84hGH 아래는 오류메시지를 상세하게 보는 화면입니다.(일본어를 자동 번역한 것이어서 약간의 의역은 있지만, 기술적인 부분은 충분히 이해하실 수 있을 것 같습니다.) 더보기 TPath에서 제공되는 경로 설명(Windows, OSX, iOS, Android) RAD Studio XE2이후 TPath를 이용해 경로를 얻어올 수 있습니다.(TPath는 RTL에 포함되기 때문에 VCL 및 FMX에서 사용하실 수 있습니다.)TPath가 제공되기 전까지 각 플랫폼 별(윈도우의 경우 XP이전과 Vista이후 버전 별) 경로를 구하기 위해 플랫폼 별로 구하는 코드를 따로 작성했는데요.(또는 관련된 함수를 찾아서 사용했습니다.) TPath가 포함되면서 위의 작업이 필요가 없어졌습니다.하지만 저를 포함한 대부분의 분들이 TPath.GetHomePath, TPath.GetLibraryPath등 몇가지만 주로 사용했을 것입니다. 하지만, 엠바카데로 문서를 보니 너무나 다양한 경로를 얻어올 수 있었네요.http://docwiki.embarcadero.com/RADStudio/XE.. 더보기 Remote Debugging(원격 디버깅) - RAD Studio(Delphi, C++Builder) 델파이와 C++빌더로 윈도우 어플리케이션을 만드는 경우가 많지만, 장비에 들어가는 소프트웨어나 로봇에 들어가는 펌웨어, 소프트웨어를 만드는 경우도 대단히 많습니다. 만약, 장비나 로봇에 들어가는 소프트웨어에서 알수 없는 오류가 나타나는 경우 디버깅을 위해 해당 장비에 델파이나 C++빌더를 설치해서 직접 디버깅하시는 분들도 있습니다. 하지만, 그 절차가 매우 번거롭고, 라이센스 위반(RAD Studio는 개발자 라이센스입니다.) 될 수 있습니다. 위와 같은 경우 RAD Studio의 원격디버깅(Remote Debugging)을 이용하실 수 있습니다. 원격 디버깅 방식은 소스코드를 컴파일하여 실행파일을 만들고, 실행파일을 원격디버거가 설치된 원격지에 복사한 후 로컬의 IDE상에서 디버깅을 하는 방법입니다. .. 더보기 RAD Studio(델파이, C++빌더) 단축키 RAD Studio(Delphi, C++빌더) 단축키 입니다.(엠바카데로 문서 자동 번역 후 일부 보정했습니다.) 컴파일 시 여러건의 오류를 이동하는 단축키를 묻는 분이 있어 찾아보니 Alt + F7, Alt + F8이 있었네요.(저도 모르고 여지껏 마우스로 클릭했네요.^^)다양한 단축키 알아두시면 개발도 빠르게 하고, 디버깅도 빠르게 할 수 있겠네요. 바로 가기작업Alt + [해당 구분 기호를 찾습니다 (앞으로).Alt + ]해당 구분 기호를 찾습니다 (역방향).Alt + ←Alt + ↑ 또는 Ctrl + 클릭 (선언 부로 이동) 작업 이전 위치로 돌아갑니다.Alt + F7Messages View에 표시되기 전에 오류 또는 메시지의 위치로 이동합니다.Alt + F8Messages View에 표시된 다음.. 더보기 RAD Studio XE5에서 FastReport VCL 추가설치 방법 RAD Studio XE5 설치 시 누락된 FastRerpot 4 VCL 컴포넌트가 저도 모르게 1월 16일 배포가 되었습니다.설치는 아래의 링크를 통해 가능하구요. XE5 라이센스가 있는 계정을 통해 다운로드 가능합니다. 다운로드 경로http://cc.embarcadero.com/item/29695 하지만, 추가 설치 시 이슈가 있습니다.위 파일을 다운로드 받은 후 설치하면 라이브러리들이 FastReport 경로(C:\Program Files (x86)\FastReports\LibD19)에 복사가 되지만 컴포넌트가 설치되지 않는 현상이 있습니다. 위의 이유로 FastReport경로의 *19.dpk파일을 열어 일일히 Install해야합니다.패키지 인스톨 방법 델파이 > File > Open > FastR.. 더보기 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 해당 글의 예제는 Delphi XE5로 테스트 했으며, 다른버전의 화면 및 메뉴 명칭은 약간 다를 수 있습니다. 가끔 주위에서 배포 시 프로그램 용량이 너무 커서 dll 등으로 폼을 분리하는 방법을 문의합니다. 저는 되도록 UPX로 실행파일 압축을 권하지만, 근본적으로 실행파일 용량을 줄이고자 하시는 분들께 도움이되는 내용입니다. Runtime Packages란?Runtime packages는 실행파일에 라이브러리를 포함하여 컴파일할지 결정하는 프로젝트 옵션(Project > Options > Packages > Runtime Packages)입니다.Runtime packages 옵션은 기본(신규 프로젝트 생성 시)으로 해제되어 있어, 컴파일된 실행파일에는 정적라이브러리(*.lib)가 모두 포함됩니다.해.. 더보기 Delphi, C++ Builder Compiler Versions 크게 몰라도 되지만 간혹 필요한 델파이 및 C++빌더의 버전 정보입니다. Delphi conditional VERProductProduct VersionPackage VersionVER260Delphi XE5 / C++Builder XE5 (Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64)19190VER250Delphi XE4 / C++Builder XE4 (Delphi:Win32/Win64/OSX/iOS) (C++Builder:Win32/Win64)18180VER240Delphi XE3 / C++Builder XE3 (Delphi:Win32/Win64/OSX/iOS) (C++Builder:Win32/Win64)17170VER230Delphi X.. 더보기 [XE3] 관리자 권한으로 실행 - Project Options 사용 UAC가 적용된 윈도우에서 레지스트리나 서비스 등을 제어하기 위해서는 어플리케이션을 관리자 권한으로 실행 해야 합니다.보통 오른쪽 마우스 버튼의 "관리자 권한으로 실행" 메뉴를 이용하면 아래와 같이 확인창이 뜨지요. 하지만 고객에게 우측마우스로 관리자 권한으로 실행해 주세요. 할 수는 없기에 실행하면 무조건 관리자 권한으로 실행되도록 해야 합니다. 관리자 권한으로 실행되는 프로그램은 아래의 그림 우측과 같이 방패 아이콘이 표시가 됩니다. 관리자 권한으로 실행하는 프로그램을 작성하기 위해서는프로젝트 리소스에서 Manifest를 변경하고 적용해야 합니다. 예전 버전의 델파이(델파이 7, 2007)로 설명된 글들이 몇개 보이지만 다소 복잡하기도 해서정말 쉽게 사용할 수 있는 방법 공유합니다. 아래 예제는 De.. 더보기 Borland Compiler Conditional Defines 컴포넌트 및 라이브러리 소스 만들 때 필요한 델파이 버전별 Conditionnal Define 값입니다.아래 형태로 사용할 수 있습니다.{$IFDEF VER270}// XE6에서만 구현할 코드{$ENDIF}Delphi conditional VERProductProduct VersionPackage VersionVER270Delphi XE6 / C++Builder XE6 (Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64/OSX/iOS/Android)20200VER260Delphi XE5 / C++Builder XE5 (Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64/OSX/iOS)19190.. 더보기 [IDE] 델파이 작업경로 바로가기 델파이로 개발 작업 중 현재 소스 경로로 이동해야 되는 일이 종종 있죠... 그럴때마다 explorer를 실행해서 이동하려면 번거롭습니다. 그럴때 유용한 기능을 소개합니다. * 델파이 메뉴에 현재 작업 중인 작업경로를 여는 메뉴를 추가합니다. 우선 예전 아는 선배에게 들은 재미있는 이야기 하나. 선배는 핸드폰 관련된 개발 일을 했습니다. 동료와 이야기 중 "Window CE에서는 탐색기를 어떻게 열어요?" 라는 질문에 근처에 있던 외국인 개발자 曰 "뭔 새끼? 탐새끼?" -_-; 그래서 그 이야기를 들은 저는 그 이후로 탐새끼라는 단어를 주로 사용합니다. 그러면 위의 탐새끼를 델파이에 등록해 보겠습니다. 1, Tools > Configure Tools 선택 2, [Add] 버튼 클릭 후 아래와 같이 입력.. 더보기 델파이 구조체(record) 사용 팁 구조체(Record) 많이 사용하시죠? 생각보다 구조체를 사용하는 방법이 다양해서 소개하려 합니다. 우선 간단한 샘플 연/월/일 형식으로 데이터 입력 후 한번에 데이터 저장하는 코드입니다. type TRecordType = (rtData, rtStructure); TDateRec = record case TRecordType of rtData: (Data: array[0..5] of Byte); rtStructure: (Year, Month, Day: Word); end; 위와 같이 구조체가 정의 되어 있습니다. 2가지 타입(rtData, rtStructure)로 사용해 봅니다. | rtStructure - 연월일 형식으로 입력 procedure TForm2.btnAddClick(Sender: TObje.. 더보기 델파이 2010(2009)에서 DSPack 설치 델파이 2009, 2010에서 설치 가능한 DSPack package(버전은 2.3.3) 입니다. \src\DSPack\DSUtil.pas 가 \src\DSPack\DSUtils.pas 로 변경 (이유: Delphi DBX Framework인 DSUtil.pas와 충돌) 기존 작성된 소스는 주의 필요 DSPack project : DSPack is a set of Components and class to write Multimedia Applications using MS Direct Show and DirectX technologies. http://code.google.com/p/dspack/ 더보기 2GB 이상 파일크기 구하는 함수 function FileSize(const AFileName: string): Int64; var srData: TSearchRec; FileData: DWORD; SizeHigh, SizeLow: Integer; RetVal: array[0..7] of Byte; begin Result := -1; {$IFDEF MSWINDOWS} FileData := FindFirst(AFileName, faReadOnly, srData); if FileData 0 then Exit; SizeHigh := srData.FindData.nFileSizeHigh; SizeLow := srData.FindData.nFileSizeLow; ZeroMemory(@RetVal[0], SizeOf(RetVal)); Move(Si.. 더보기 [Delphi] Wild Card 문자비교 문자열에서 Wild Card('?': single character, '*': multi character)를 포함하여 비교한다. function MatchString(ASource, APattern: String): Boolean; function _MatchPattern(element, pattern: PChar): Boolean; begin if 0 = StrComp(pattern, '*') then Result := True else if (element^ = Chr(0)) and (pattern^ Chr(0)) then Result := False else if element^ = Chr(0) then Result := True else begin case pattern^ of '*': if _.. 더보기 이전 1 2 3 4 5 다음