본문 바로가기

분류 전체보기

블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 S모전자에서 의뢰한 휴대용 바코드 스캐너와 연동한 내용 공유합니다.휴대용 바코드 스캐너는 JAR 형태의 안드로이드 라이브러리를 제공합니다.이 과정을 통해 델파이와 안드로이드 라이브러리 연동하는 내용을 소개합니다. 휴대용 바코드 스캐너 연동 위 영상의 휴대용 바코더 스캐너는 클래식 블루투스 기반으로 연결을 제공합니다.해당 안드로이드 앱은 델파이로 제작했으며, JAR 파일을 이용해 스캐너와 연동합니다. JAR 파일 연동과정은 아래와 같습니다.1, 준비(라이브러리 준비 및 분석)2, 델파이용 안드로이드 라이브러리 브릿지 파일 생성3, 델파이 프로젝트에 안드로이드 라이브러리 추가4, 브릿지 파일을 이용해 안드로이드 라이브러리 연동 기타 안드로이드 라이브러리 연동 시 참고사항델파이 샘플 프로젝트 준비(라이브러리 .. 더보기
[10.2 도쿄] 델파이/C++빌더 리눅스 개발환경 설정하기 RAD 스튜디오 10.2 도쿄버전이 출시되어 해당 내용을 아래 글에서 업데이트 하였습니다.http://tech.devgear.co.kr/delphi_news/430268 곧 출시 예정인 RAD 스튜디오 10.2 도쿄 버전에서는 리눅스 개발 지원을 대기하고 있습니다. 이 글에서는 RAD 스튜디오로 리눅스 개발하기 위한 환경설정 및 개발 절차를 설명합니다. (이 글은 베타버전 기준으로 작성되며, 정식 출시 이후 업데이트하도록 하겠습니다.) 리눅스 개발환경 설정리눅스 개발환경 설정은 아래 절차 순으로 진행합니다.리눅스 OS 설치RAD 스튜디오 설치리눅스 머신에 PAServer 설치 및 실행RAD 스튜디오에서 PAServer 연결 설정 RAD 스튜디오에서 리눅스 SDK 설정코드 작성 및 실행리눅스 OS 설치공식.. 더보기
[안드로이드] 포토 라이브러리 목록 불러오기 안드로이드 내부 저장소에 저장된 사진의 썸네일 목록을 가져오는 코드입니다. uses Androidapi.Helpers, Androidapi.JNI.Net, Androidapi.JNIBridge, Androidapi.JNI.Provider, Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, Androidapi.JNI.JavaTypes; procedure TForm1.Button1Click(Sender: TObject); var Uri: Jnet_Uri; Projection: TJavaObjectArray; Cursor: JCursor; FilePath: string; Item: TListBoxItem; begin Uri := TJImages_Thu.. 더보기
Out of memory 오류 해소 방안 메모리 부족(Out of memory) 오류 해소 방안을 델파이 기준으로 설명합니다.증상윈도우즈 기반 애플리케이션 시작 또는 실행 중 Out of memory 예외(Exception)이 발생 원인데스크탑 힙 제한에 의한 메모리 부족메모리 누수(Leak)에 의한 메모리 부족과도한 메모리 사용에 의한 메모리 부족 조치방법데스크탑 힙 제한에 의한 메모리 부족데스크탑 힙 제한에 의한 메모리 부족 오류가 발생할 수 있습니다. 마이크로소프트 지원 페이지에서 레지스트리를 수정하는 해결 방법을 안내합니다.https://support.microsoft.com/ko-kr/kb/947246 메모리 누수(Leak)에 의한 메모리 부족프로그램내에서 할당된 메모리를 사용 후 반환하지 않는 메모리 누수가 반복될 경우 메모리 부족이.. 더보기
[필립스 휴] API 정리 필립스 휴는 REST API를 통해 전구를 제어할 수 있는 제품입니다.필립스 휴 : http://www2.meethue.com/ko-kr/ 구성 전구는 브릿지를 통해 제어하며, 애플리케이션은 브릿지에게 명령을 전송하면 브릿지가 개별전구를 제어하는 방식으로 구성됩니다. 브릿지는 여러개의 전구와 ZigBee로 연결되어 있습니다. 필립스 휴 API 시작하기http://www.developers.meethue.com/documentation/getting-started사용자 등록Addresshttp:// /apiBody{"devicetype":"사용자 아이디"}MethodPOST조명 ON/OFFAddresshttp:// /api/{사용자 아이디}/lights/1/stateBody{"on":false}Method.. 더보기
마우스 이벤트 캡쳐 - SetCapture, ReleaseCapture 마우스 이벤트를 캡쳐해야 하는 경우 SetCapture(Win32 API)를 이용하면 됩니다.다 사용한 경우 ReleaseCapture로 해제합니다. Win32 API: SetCaptureWin32 API: ReleaseCapture 아래 예제는1) 폼위에 패널 위치2) 폼과 패널은 각각 MouseMove 이벤트에서 로그 기록3) 패널에서 MouseDown 시 폼으로 SetCapture 시도 > 이후 패널 및 메모 위의 마우스 이벤트가 폼에서 발생4) MouseUp 시(폼에서 마우스 이벤트를 가져가 폼의 MouseUp이벤트에서 구현필요) ReleaseCapture로 캡쳐 해제procedure TForm2.FormCreate(Sender: TObject); begin FIsCaptured := False;.. 더보기
모바일 디바이스 화면 방향전환 이벤트 수신하기 모바일 디바이스의 방향을 가로 또는 세로, 그리고 역방향으로 돌리는 동작을 알아낼 수 있습니다. 파이어몽키 프레임워크에서 제공하는 기능으로 TMessageManager에 구독해 이벤트를 받을 수 있습니다.(부가적으로 이런 개발 방식을 옵저버 패턴이라고 합니다.^^) 위 스크린샷은 1) 시작(폼생성) 시 TMessageMenager에 TOrientationChageMessage에 대해 OrientationChaged 이벤트를 구독하고2) 종료 시 : 구독을 해지합니다.3) 현재 스크린 방향은 IFMXScreenService.GetScreenOrientation 메소드를 통해 알아 올 수 있습니다. 자세한 내용은 아래 샘플코드를 통해 확인하세요.델파이 10.1 베를린 버전으로 작성되었습니다. 해당 내용은 델.. 더보기
Object Pascal Style Guide 여러명이 협업하는 프로젝트에서는 표준화가 매우 중요합니다.코딩 스타일 표준화에 참고할 수 있는 Object Pascal 스타일 가이드문서입니다. 영문(원문): http://edn.embarcadero.com/article/10280 한글번역 문서:http://documents.mx/documents/object-pascal-style-guide-kor.html 델마당의 김시준님글과 깨몽(이선우)님의 글을 참고했습니다.http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&bbsCat=0&indx=451050&page=1 더보기
TListView Dynamic Appearance로 추가한 항목을 코드로 제어하기 (해당 기능은 RAD 스튜디오 10.1 베를린 이상에서 사용할 수 있습니다.) TListView는 이미 정의된 ItemAppreance를 이용해 목록을 구성하기 때문에 TListBox에 비해 스크롤이 부드럽고 빠릅니다. 하지만, 베를린 버전에서 Dynamic appreance 기능이 추가되어 아래 그림과 같이 아이템 항목을 마음대로 정의할 수 있습니다. Dynamic Appreance에 대한 자세한 내용은 아래 링크를 참고하세요.http://docwiki.embarcadero.com/RADStudio/Berlin/en/Customizing_FireMonkey_ListView_Appearance#Customizable_Item_Appearances오늘 소개할 내용은 위와 같이 사용자가 추가한 항목을 코드를.. 더보기
리눅스(우분투) 설치 델파이와 C++빌더가 리눅스 서버를 지원하는 등의 로드맵이 2016년 8월 공개되었습니다.[로드맵] RAD 스튜디오 로드맵(2016년 8월) : http://tech.devgear.co.kr/delphi_news/424583그래서, 가상머신(VMWare)에 리눅스를 설치해봤습니다. 그것도 최근 핫한 우분투로... 설치 과정은 상당히 간단했구요. 한글설정 관련해 몇가지 이슈가 있었지만 인터넷을 찾아 금방 해결했습니다.관련 링크 몇가지 공유합니다. PS - 델파이 제품관리자 Marco Cantu가 리눅스 25주년 기념으로 델파이로 리눅스 컴파일한 이미지 몇장을 올려놨네요.http://blog.marcocantu.com/blog/2016-august-linux-25-delphi-coming.html 리눅스도 .. 더보기
TWICImage를 이용해 다양한 이미지 포맷의 파일을 불러오고 저장하기. TWICImage는 Microsoft Windows Imaging Component를 캡슐화 한 클래스로 다양한 이미지 포맷을 조작할 수 있습니다. 사용법은 아래 샘플코드와 같이 TImage 컨트롤에서 파일을 로드하기 전에 TWICImage로 먼저 로드한 후 TImage에 할당하면 다양한 이미지 포맷을 TWICImage가 처리해 줍니다. (TWICImage는 RAD Studio 2010 부터 지원합니다.) procedure TForm2.btnImageLoadClick(Sender: TObject); var wic: TWICImage; begin if OpenDialog1.Execute then begin wic := TWICImage.Create; try wic.LoadFromFile(OpenDialog.. 더보기
[마이그레이션 사례] 감리교 신학대학교 고객들의 PC환경과 요구사항이 아주 빠르게 발전하고 있습니다. 윈도우10 등의 최신 운영체제를 탑재한 PC환경과 새로운 요구사항에 대응하기 위해서는 RAD 스튜디오(델파이, C++빌더)에서 제공하는 최신 기능을 활용할 수 있도록 마이그레이션이 필요합니다. 저는 여러분들이 직접 마이그레이션을 진행할 수 있는 마이그레이션 관련 자료와 팁을 제공하고, 마이그레이션 컨설팅, 마이그레이션 워크샵 등을 통해 직접적인 도움이 필요한 프로젝트나 기업을 지원하고 있습니다.마이그레이션을 계획하거나 진행하고 계신 분들에게 도움되도록 마이그레이션 프로젝트 과정의 일부를 간단히 정리해 공유합니다. 감리교 신학대학교 - 마이그레이션 컨설팅프로젝트 기간 : 2016년 5월 ~ 7월(3개월)지원방법 : 마이그레이션 방문컨설팅버전 :.. 더보기
퀵레포트(Quick Report)에 사진 출력하기 DBMS의 Blob 컬럼의 이미지 데이터를 퀵레포트 보고서에 출력하는 내용입니다. (추가) 2016.09.02 : 미리보기에서 사진이 나오는데, 실제 인쇄 시 사진이 출력되지 않는 이슈해결 방안을 추가했습니다. 쿽레포트에 사진을 출력하려면 TQRImage, TQRDBImage 2개의 컴포넌트를 이용할 수 있습니다.(TQRDBImage는 비트맵 데이터만 출력할 수 있습니다.) 저는 JPEG, GIF, PNG 등을 지원하기 위해 TQRImage를 이용합니다. 아래 델파이 샘플은 BOOK_THUMB(Blob 컬럼)의 데이터를 읽어 TQRImage에 표시하는 내용입니다.Blob 컬럼을 읽기 위해 TBlobField를 사용하고, TWICImage를 이용해 다양한 포맷을 지원합니다.(BLOB 컬럼에서 (이미지 등의.. 더보기
퀵레포트 보고서 엑셀로 내보내기(저장하기) (Quick Report 5.0.6 버전으로 작성된 내용입니다.)퀵레포트(QuickReport)로 작성한 보고서를 저장해야 하는 경우 퀵레포트 필터를 통해 다양한 포맷을 추가할 수 있습니다. 위 필터 중 TQRXLSXFilter를 통해 엑셀로 보고서를 내보내기(저장)할 수 있습니다. 하지만 엑셀로 내보내기 기능을 제공하려면 XLColumn 속성을 설정해야 합니다.XLColumn 속성은 엑셀에 표시되는 컬럼 순서로, 인쇄가능한 퀵레포트 컴포넌트들(TQRLabel, TQRDBText 등의 TQRPrintable 클래스를 상속받는 컴포넌트 들)은 모두 XLColumn 속성을 갖고 있습니다.(다시 말해 대부분의 컨트롤의 XLColumn 속성을 설정해야 합니다.) XLColumn 속성은 다음 특징을 참고해 신중히.. 더보기
BLOB 컬럼에서 (이미지 등의)데이터 읽고 쓰기 (해당 내용은 모든 데이터셋(TDataSet을 상속받은 컴포넌트) 즉, FireDAC, dbExpress, dbGo(ADO) 등에 적용할 수 있습니다.) 대부분의 DBMS에서 Blob(Binary Large object) 타입의 컬럼을 만들 수 있습니다. 이 컬럼에는 이미지등의 큰 바이너리 데이터를 취급할 수 있습니다. 아래 코드는 Blob 컬럼에서 이미지를 읽고, 쓰는 델파이 예제입니다. Blob 컬럼에 이미지 데이트 쓰기var wic: TWICImage; // Microsoft Windows Imaging Component Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try Image1.Picture.SaveToStream(Stream).. 더보기
구글 통계(Google Analytics)를 써드파티 컴포넌트 없이 구현하는 방법 델파이 개발자인 Rafael Ribas Aguiló의 블로그에서 델파이에서 써드파티 컴포넌트 없이 구글 통계(Google Analytics)와 연동하는 내용이 있어 소개합니다. 해당 내용은 안드로이드 기반으로 작성되었습니다. 안드로이드 앱 개발하시는 분들은 참고하시기 바랍니다. 최근에는 앱을 만드는 작업도 중요하지만, 사용성(Usability)을 높이는 작업이 상당히 중요합니다.여러분들의 고객이 어떤 메뉴나 기능을 얼마나 많이 사용하는지 분석하는 작업에 이용하면 구글 통계를 이용해 더 완성도 높고 사용성 높은 앱을 만들어 보세요. http://thedelphiway.blogspot.kr/2016/07/google-analytics-in-delphi-mobile.html 더보기
[팁] 파라메터 값이 포함된 쿼리 문자열 만들기 SQL 작성 시 아래와 같이 파라메터를 많이 이용합니다. SELECT * FROM EMPLOYEE WHERE EMP_ID = :EMP_ID 하지만, SQL을 로그로 기록할 경우 파라메터 명(:EMP_ID) 대신 파라메터 값이 들어가야 할 경우 아래와 같이 파라메터 값이 적용된 SQL을 만들어 사용할 수 있습니다. procedure TForm1.Button1Click(Sender: TObject); var I: Integer; SQLStr, ParamName, ParamValue: string; begin Query1.Close; Query1.ParamByName('Name').AsString := '홍길동'; Query1.ParamByName('JUNHYEONG').AsString := '2'; Quer.. 더보기
[교육] 마이그레이션 워크샵 과정 마이그레이션 가이드 문서 샘플 양식 마이그레이션 가이드https://docs.google.com/document/d/1qrmFU2tbI09-aXcBgtaXeUNwapkhxqDVlRe9-rTt_SU/edit?usp=sharing 마이그레이션 이슈공유https://docs.google.com/spreadsheets/d/1riUy-er4E-Uop1SH_k8D1dRrmMUO42DuzZj3vVMhlUA/edit?usp=sharing 이슈 공유 문서마이그레이션 이슈 공유https://docs.google.com/spreadsheets/d/1OjNTxcu2Xq9e1OUpdBdUUk3QedI9_CvihYsKvkGS2jk/edit#gid=0 마이그레이션 워크샵 이슈 공유https://docs.google.com/spre.. 더보기
[팁] 소스코드 압축 시 불필요한 확장자 파일 제거하고 압축하기(7zip 이용) 버전관리 시스템(SVN, VSS, Git, Mercurial 등)을 이용해 소스코드를 관리하는 것이 가장 좋은 선택입니다.하지만 소스코드를 압축해야 할 경우가 있는데요. 7zip의 커맨드라인 명령어를 이용해 필요없는 파일들을 제외하고 압축할 수 있습니다. 7z.exe a -tzip Source.zip Source\ -xr!*.dcu -xr!*.~* -xr!*.exe -xr!*.bak pause 위의 코드는 Source.zip으로 압축하되 -x(eXclude) 파라메터를 이용해 필요없는 파일을 지정합니다.연속으로 파일포맷을 지정하는 방법을 몰라 여러번 기록하니 잘되네요. 참고링크https://www.bandisoft.co.kr/bandizip/help/cmdline/https://sevenzip.osdn... 더보기
VCL 스타일이 적용된 앱을 다른 프로세스에 넣을때 메인메뉴가 클릭되지 않는 이슈 해결방법 다음 글을 참고하면 다른 프로세스의 화면을 특정 영역(패널 등)에 넣을 수 있습니다.[Delphi/C++Builder] - [VCL] 다른 프로세스의 폼을 패널등에 넣기 그런데, VCL 스타일이 적용된 프로세스를 위 방법으로 진행할 경우 메인메뉴가 클릭되지 않는 증상이 발생합니다. 이 경우 VCL 스타일이 적용된 프로젝트에서, 메인폼의 StyleElements 속성의 seBorder 항목을 False로 변경 후 다시 컴파일 하면 메인메뉴 클릭이 정상 동작합니다. 더보기