Search results for 'Delphi/C++Builder'

  1. 2015.09.07 -- [시애틀] 비콘펜스(BeaconFence)등 새로운 오픈 소스와 컴포넌트 패키지를 IDE에서 직접 확보할 수 있습니다.
  2. 2015.06.26 -- [XE8] 코딩 중 이유없이 델파이 IDE가 응답없음 되는 경우 참고사항
  3. 2015.06.25 -- 델파이 프레임워크(VCL/FMX) 소스코드를 직접 수정하는 방법
  4. 2015.05.28 -- [XE8] RAD Studio XE8을 지원하는 외부 컴포넌트와 도구
  5. 2015.05.27 -- JVCL(JCL) 써드파티 컴포넌트 최신버전을 받기
  6. 2015.03.24 -- 델파이/C++빌더에 TServerSocket, TClientSocket 등록하기
  7. 2015.03.06 -- 웹사이트의 인증서 오류를 무시하고 http 결과 조회하기(WinInet 이용)
  8. 2015.03.02 -- [VCL] 에디트에 숫자만 입력, 콤마찍기
  9. 2015.02.13 -- [VCL] 에디트/버튼의 다양한 속성 소개
  10. 2015.02.09 -- FieldByName 사용팁 - 사악신님의 글
  11. 2015.02.03 -- [VCL] TaskDialog 컴포넌트 소개
  12. 2015.01.21 -- [컴포넌트 소개] TWebUpdate - 업데이트 프로그램 제작 컴포넌트/지원 툴(TMS Software)
  13. 2015.01.13 -- (문서)프로그래밍 언어 기초 - 델파이와 C++
  14. 2015.01.12 -- getAwesomeness() - Delphi(참고할 만한 델파이 오픈소스)
  15. 2014.12.30 -- TurboPack - XE7 지원하는 오픈소스 컴포넌트
  16. 2014.12.30 -- [XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기
  17. 2014.12.24 -- XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)
  18. 2014.12.12 -- VCL의 유용하지만 놓칠수 있는 기능 들
  19. 2014.12.10 -- 델파이로 국제화된 다국어 애플리케이션 만들기 (1)
  20. 2014.12.05 -- 블루투스LE(Bluetooth Low Energy)의 이해

[시애틀] 비콘펜스(BeaconFence)등 새로운 오픈 소스와 컴포넌트 패키지를 IDE에서 직접 확보할 수 있습니다.

2015.09.07 10:27

비콘펜스(BeaconFence)등 새로운 오픈 소스와 컴포넌트 패키지를 IDE에서 직접 확보할 수 있습니다.

겟잇(GetIt) 라이브러리 확장


Tools > Getit Package Manager... 메뉴로 이용할 수 있습니다.


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

[XE8] 코딩 중 이유없이 델파이 IDE가 응답없음 되는 경우 참고사항

2015.06.26 14:54

코딩 중 특별한 이유없이 IDE가 응답없음 되면 카스탈리아 기능을 끄고 진행해 보세요.

(저도 안드로이드 타겟으로 개발 시 특정 라인에서 꺽쇠주석({})을 추가할 때 델파이 IDE가 응답없음이 발생했고, 카스탈리아 기능을 끄니 재현되지 않네요.)


아래 그림과 같이 바로가기 뒤에 /NOCASTALIA 옵션을 추가하면 카스텔리아 기능이 동작하지 않습니다.

(파이어몽키 카페에서 오실장님 글을 참고했습니다. - http://cafe.naver.com/delphifmx/983)



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

델파이 프레임워크(VCL/FMX) 소스코드를 직접 수정하는 방법

2015.06.25 18:23

개발을 하다보면 프레임워크가 제공하는 기능을 약간 수정하고 싶거나, 버그를 수정하고 싶은 경우가 있습니다. 아래 내용을 참고해 델파이 프레임워크 소스코드를 수정해서 사용하기 바랍니다.(VCL과 파이어몽키 모두 사용가능합니다.)

(주의 : 잘못 수정했을 경우 많은 영역에서 사이드 이펙트가 발생 할 수 있으므로, 정확히 이해한 경우에 한해 프레임워크 소스를 수정하기 바랍니다.)


만약, VCL 또는 파이어몽키 버그를 발견했다면 혼자만 수정해서 사용하지 말고 제품에 반영될 수 있도록, 엠바카데로에 레포팅해주시기 바랍니다.^^

(엠바카데로 퀄리티 포털 이용방법 안내)

델파이 프레임워크 소스 수정방법

1, 프로젝트 경로로 소스파일 복사

수정하고 싶은 소스파일(*.pas)을 프로젝트 파일(*.dproj)과 동일한 경로에 복사합니다.

소스파일은 델파이 설치경로 하위 Source 디렉토리에 있습니다.

(XE8의 경우 : C:\Program Files (x86)\Embarcadero\Studio\16.0\source)    

2, 소스코드 수정

1번에서 복사한 소스파일을 File > Open 메뉴로 열어, 수정합니다.(프로젝트에 파일을 추가해도 됩니다.)

3, 컴파일

컴파일 시 델파이는 프로젝트 파일(*.dproj)과 같은 경로의 소스코드를 제일먼저 참조하기 때문에 위에서 수정한 소스파일이 컴파일 되어 실행됩니다.(당연히 디버깅도 가능합니다.)



위의 내용으로 수정 시 해당 프로젝트에만 적용됩니다.

너무 많은 부분을 수정하면 델파이 버전 업데이트 시 고생할 수 있습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

[XE8] RAD Studio XE8을 지원하는 외부 컴포넌트와 도구

2015.05.28 11:41

델파이 XE8과 C++빌더 XE8을 지원하는 오픈소스 컴포넌트와 도구, 플러그인입니다.

❑ JCL / JVCL

다양한 기능을 제공하는 델파이, C++빌더 개발자들에게 익숙한 JCL/JVCL 컴포넌트

  • JCL - https://github.com/project-jedi/jcl
  • JVCL - https://github.com/project-jedi/jvcl

❑ IDE Fix Pack

IDE를 최적화해주는 플러그인

❑ GExperts

IDE에 유용한 기능을 추가 해주는 플러그인

❑ DDevExtensions

IDE 기능을 확장해주는 플러그인

❑ CnPack

IDE 기능을 확장해 주는 플러그인


RAD Studio XE8 추가기능인 Getit..(패키지 관리자)에서 엠바카데로가 호스팅하는 컴포넌트를 찾아 설치할 수 있습니다.

❑ Getit(패키지 관리자)


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

JVCL(JCL) 써드파티 컴포넌트 최신버전을 받기

2015.05.27 16:13


JVCL/JCL 컴포넌트는 오픈소스로 진행되는 써드파티 컴포넌트로, 델파이 6 부터 XE8(2015.5월 기준)까지 지원합니다.

(기존 소스포지에서 깃허브로 둥지를 옮긴듯해요.)

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

델파이/C++빌더에 TServerSocket, TClientSocket 등록하기

2015.03.24 10:40

TServerSocket과 TClientSocket은 기본적으로 감춰져 있어 패키지 등록 후 사용할 수 있습니다.

  1. RAD Studio > Component > Install Packages
  2. [Add] 버튼 클릭
  3. (RAD Studio 설치 경로)\bin 으로 이동 후 dclsockets(버전숫자).bpl 선택
    • XE7 기준 경로 : C:\Program Files (x86)\Embarcadero\Studio\15.0\bin
    • XE7 기준 파일명 : dclsockets210.bpl
  4. [OK] 버튼 클릭

컴포넌트 팔랫트의 Internet 카테고리에 TServerSocket, TClientSocket이 등록됩니다.


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

웹사이트의 인증서 오류를 무시하고 http 결과 조회하기(WinInet 이용)

2015.03.06 13:37

고객사에서 웹서비스 연동 시 아래와 같이 인증서가 잘못된 경우 무시할 수 있는 방법을 요청해 공유합니다.


1, 서버 인증서 오류 내용 

한글 : 이 웹 사이트의 보안 인증서에 문제가 있습니다 

영문 : There is a problem with this website's security certificate - http://support.microsoft.com/kb/931850/ 


2, 영문으로 검색 시 아래와 같은 키워드를 찾았습니다. 

WINHTTP_OPTION_SECURITY_FLAGS 

SECURITY_FLAG_IGNORE_UNKNOWN_CA 

SECURITY_FLAG_IGNORE_CERT_CN_INVALID 

SECURITY_FLAG_IGNORE_CERT_DATE_INVALID 

(https://msdn.microsoft.com/en-us/library/windows/desktop/aa384066(v=vs.85).aspx


위의 플래그들이 잘못된 인증서를 무시하라는 옵션설정으로 보입니다. 


3, 위 보안 플래그를 설정하는 데모 

http://www.nldelphi.com/showthread.php?39901-Bad-cipher-melding 

http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26824117.html

위 링크를 참고해 첨부파일의 샘플을 만들어 보았습니다. 

주요 코드는 아래와 같으며 WinInet을 이용하기 위해 uses 절에 "Winapi.WinInet"를 추가해야 합니다.

ReqFlags := ReqFlags
              or SECURITY_FLAG_IGNORE_UNKNOWN_CA
              or SECURITY_FLAG_IGNORE_CERT_CN_INVALID
              or SECURITY_FLAG_IGNORE_CERT_DATE_INVALID
              or SECURITY_FLAG_IGNORE_REVOCATION;
  // Set new flags
  if not(InternetSetOption(hReq, INTERNET_OPTION_SECURITY_FLAGS, @ReqFlags, dwSize)) then begin
    // Get error code
    dwError := GetLastError;
    // Failure
    MessageBox(0, PChar(IntToStr(dwError)), PChar('Confirm'), MB_OK or MB_ICONINFORMATION);
  end;


4, 테스트 & 결과

DelphiIgnoreUnknownCA.zip


첫번째 버튼은 TIdHttp 컴포넌트로 https를 호출하고 

두번째 버튼은 WinInet을 이용했습니다. 


아쉽게도 인증서 오류가 발생한 환경이 없어 고객에게 테스트 요청했습니다. 결과가 오거나 테스트 환경을 찾게되면 테스트 후 결과를 추가하겠습니다.(기본 동작만 https를 제공하는 facebook에서 확인한 상태입니다.)

===============================

[테스트 결과 추가]

고객사에서는 Release 모드인 경우 통과 Debug 모드인 경우 3회의 통신 오류 후 응답 수신되었다는 결과를 받았습니다.

(하지만, 고객사의 내부보안이 강력해 보안 이슈도 고려해야하는 결과였습니다.)

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder SSL, Wininet

[VCL] 에디트에 숫자만 입력, 콤마찍기

2015.03.02 16:05

VCL 에디트(TEdit)의 NumbersOnly 속성을 이용하면 컨트롤에 숫자만 입력받도록 구현할 수 있다는 것 잘 아실텐데요.이번 글에서는 숫자 입력 시 콤마를 자동추가할 수 있도록 구현한 내용 공유합니다.


기능은 2가지입니다.

  • 키입력 시 3자리마다 콤마 추가(e.g. 123,456,789,012)
  • 에디트에서 순수 숫자만 읽고 쓰기(PlainText 속성 추가)

구현은 여러폼에서 uses에 추가하기만 하면 동작하도록 별도의 유닛으로 만들었습니다.

unit Vcl.EditExtends;

interface

uses
  Vcl.StdCtrls, Vcl.Controls, System.Classes;

type
  TEdit = class(Vcl.StdCtrls.TEdit)
  private
    function GetPlainText: string;
    procedure SetPlainText(const Value: string);
  protected
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
  public
    property PlainText: string read GetPlainText write SetPlainText;
  end;

implementation

uses
  SysUtils;

{ TEditEx }

procedure TEdit.KeyUp(var Key: Word; Shift: TShiftState);
var
  S: string;
begin

  inherited;

  S := Text;
  S := S.Replace(',', '').Replace('.', '');
  Text := FormatFloat('#.###,##', StrToFloatDef(S, 0));
  selStart := Length(Text) + 1;
end;

function TEdit.GetPlainText: string;
var
  S: string;
begin
  S := Text;
  Result := S.Replace(',', '').Replace('.', '');
end;

procedure TEdit.SetPlainText(const Value: string);
var
  Key: Word;
begin
  Text := Value;
  KeyUp(Key, []);
end;

end.

NumbersOnly.zip


사용법은 

  1. 폼에 Edit 컴포넌트를 추가하고 Vcl.EditExtends를 상단(interface) uses 절에 추가합니다.(Vcl.StdCtrls 뒤에 Vcl.EditExtends가 추가되야 합니다.)
  2. 키입력시 콤마 추가는 자동으로 동작합니다.
  3. 순수 숫자 넣고 읽기는 PlainText 메소드를 이용할 수 있습니다.
기타 필요한 기능 추가해서 사용하시기 바랍니다.(알려주시면 기능을 추가해서 올리겠습니다.)


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

[VCL] 에디트/버튼의 다양한 속성 소개

2015.02.13 10:27

VCL 기본 컴포넌트 중 가장 많이 사용하는 에디트(TEdit), 버튼(TButton)의 다양한 속성을 소개합니다. 

대부분 아는 속성일테지만 항상 사용하는 기본 속성만 사용하는 분들은 이 기회에 다양한 속성 사용해 보세요.


❑ 에디트 텍스트 정렬

Alignment 속성 선택(taCenter, taLeftJustify, taRightJustify)으로 텍스트의 위치를 지정할 수 있습니다.

❑ 에디트 텍스트 힌트(콤보박스도 가능)

TextHint 속성을 이용해 Text가 비어있으면 입력항목의 설명을 배경으로 표시할 수 있습니다.


콤보박스도 항목(Items)와 무관하게 설명을 표시합니다.

❑ 에디트 숫자만 입력 / 비밀번호 문자

NumbersOnly 속성으로 숫자만 입력하도록 강요합니다.

PasswordChar에 '■'를 입력하면 해당 문자로 비밀번호가 표시됩니다.

❑ 에디트 대소문자 변경(메모 포함)

CharCase 속성(ecLowerCase, ecNormal, ecUpperCase)을 변경해 대소문자로 입력 받을 수 있습니다.(아이디나 이메일 등의 필드에서 유용할 것 같네요.)

❑ 버튼 속성

권한상승 아이콘 표시

ElevationRequired 속성을 True로 지정 시 권한 상승 아이콘이 표시됩니다.(권한상승 동작은 별도 구현해야 합니다.)


버튼 스타일

Style 속성을 변경(bsCommandLink, bsPushButton, bsSpliteButton)해 커맨드 링크 방식과 분할 버튼 방식으로 표시할 수 있습니다.

분할버튼은 TPopupMenu 컴포넌트를 추가하고 버튼의 DropDownMenu에 연결해 사용할 수 있습니다.

❑ 데모 프로젝트 소스코드


관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder TButton, TEdit, vcl

FieldByName 사용팁 - 사악신님의 글

2015.02.09 17:44

FieldByName('fieldName').AsString과 같이 많이 사용하시죠? 웹서핑 중 사악신님 블로그에서 FieldByName 사용 팁을 발견해 공유합니다.


FieldByName 호출 시 수행되는 과정을 파해치고 대안을 제시해 줍니다. 짧으면서 좋은 팁이네요.


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

[VCL] TaskDialog 컴포넌트 소개

2015.02.03 14:04

TTaskDialog 컴포넌트

작업에 대한 소개와 다양한 옵션으로 다중작업 중 선택할 수 있는 TTaskDialog 컴포넌트를 소개합니다.

아래와 같이 다양한 정보와 선택지(RadioButton, CommandLink, 버튼)를 제공하고 입력 받을 수 있습니다.

선택한 버튼에 대한 정보는 ModalResult 속성으로 버튼번호를 알아 옵니다.

❑ 기본 정보

Caption, Text, Title 속성으로 작업에 대한 기본 정보를 설정할 수 있습니다.

❑ 자세한 정보

ExpandedText, ExpandButtonCaption 속성으로 추가정보를 제공합니다. 추가정보는 기본으로 감추고 자세한 정보 보기 버튼을 누르면 자세한 내용이 작업설명 하단에 표시됩니다.

❑ 버튼

CommonButtons 속성을 통해 확인, 예, 아니오, 다시시도, 취소, 닫기 버튼을 표시합니다.

Buttons 속성에 사용자 정보를 추가해 표시할 수 있습니다.

❑ 메인 아이콘

MainIcon 속성으로 메인 아이콘을 설정합니다.





❑ 하단(Footer) 정보

FooterText, FotterIcon 속성으로 하단의 추가 설명과 아이콘을 설정합니다.

❑ 확인 체크박스

VerificationText 속성을 입력하면 체크박스가 추가되고 OnVerificationClicked 이벤트를 발생시킵니다.

체크박스 선택여부는 Flags 속성의 tfVerificationFlagChecked 항목 선택 여부로 알 수 있습니다.

procedure TForm5.TaskDialog1VerificationClicked(Sender: TObject);
begin
  if tfVerificationFlagChecked in TaskDialog1.Flags then
    CheckBox9.Font.Style := [fsBold]
  else
    CheckBox9.Font.Style := [];
end;

❑ 라디오버튼

RadioButtons 속성에 항목을 추가해 하나를 선택할 수 있는 라디오버튼을 제공합니다.

❑ CommandLink

Flags 속성의 tfUseComandLinks 항목을 선택하면 Buttons 속성에 추가한 항목을 아래와 같은 Link 형식으로 표시합니다.

❑ ProgressBar 표시

Flags 속성의 tfShowProgressBar 항목을 선택하면 상태바를 표시할 수 있습니다.


관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder TTaskDialog, vcl

[컴포넌트 소개] TWebUpdate - 업데이트 프로그램 제작 컴포넌트/지원 툴(TMS Software)

2015.01.21 16:20

자동 업데이트 프로그램은 주요 기능은 아니지만 빠져서는 안되는 프로그램 중 하나입니다. 이번 글에서는 자동 업데이트 프로그램 제작 시 도움이 되는 TWebUpdate 컴포넌트를 소개합니다.


자동 업데이트 프로세스는 시스템 환경에 맞게 각자 정해야 하지만 자동 업데이트에 필요한 기술은 TWebUpdate 컴포넌트를 활용해 빠르게 개발해 여러분의 시간을 절약할 수 있습니다.


자동 업데이트 프로세스에 대해 익숙하지 않은 분들을 위해 HTTP를 이용한 자동 업데이트 프로세스 예를 한가지 들어 보겠습니다.

  1. 업데이트할 파일을 웹 서버에 업로드 하고, 업데이트 정보를 담고 있는 업데이트 정보파일도 웹서버에 업로드 합니다.
  2. 프로그램이 실행 시 메인 프로그램 전에 업데이트 프로그램을 실행하도록 구성하고, 업데이트 프로그램은 HTTP를 이용해 업데이트 정보를 받아와 업데이트 여부를 확인합니다. 
  3. 업데이트가 필요하면 웹서버의 업데이트할 파일을 다운로드 하고 메인 실행파일(또는 데이터)을 교체합니다.
  4. 업데이트 프로그램은 메인 프로그램을 실행하고 자신은 종료합니다.
위 프로세스에서 TWebUpdate 컴포넌트는 아래의 기능을 제공하기 때문에 여러분들이 실제 개발할 부분은 업데이트 프로세스를 정하고 제공되는 기능으로 프로세스대로 실행되도록 구현하는 부분을 진행하면 됩니다.
  • 업데이트 파일을 준비(압축 등)하고 업데이트 정보파일을 생성
  • 업데이트 정보를 받아와 업데이트 여부를 확인
  • 업데이트 파일을 다운로드 하고 실행파일(또는 데이터)을 교체

❑ TWebUpdate 컴포넌트

TWebUpdate 컴포넌트는 HTTP, HTTPS, FTP, 파일 네트워크 상의 업데이트 정보파일을 읽어 업데이트를 판단하고 업데이트를 수행하는 기능을 제공하는 컴포넌트입니다. 업데이트 판단하는 방식은 파일의 버전, 파일생성 일자, 체크섬, 파일크기, 사용자 버전을 제공합니다. 배포할 파일을 압축해 배포하고 업데이트 목록 중 일부만 업데이트하는 기능, 업데이트 과정을 쓰레드로 진행하는 기능 등의 부가적인 기능도 제공합니다.

TWebUpdate의 특징은 업데이트에 필요한 정보(배포파일 목록, 업데이트 버전, 파일크기 등)를 기록한 업데이트 정보파일을 생성할 수 있는 자동화 도구인 Update Builder를 제공합니다. 

❑ Update Builder

반복되는 업데이트 과정에서 수작업으로 업데이트 정보파일을 만드는 작업은 실수도 잦고, 번거로울 수 있는데요. Update Builder는 한번 설정한 정책을 파일로 저장하고, 다음 업데이트 시 다시 불러와 빌드 과정만 진행하면 업데이트 정보파일을 새로 생성해 주기 때문에 실수도 적어지고, 작업자의 노력과 시간을 줄여줍니다.

업데이트 파일 추가

UpdateBuilder의 기본 탭인 Files에서는 업데이트할 파일을 추가하고, 개별파일마다 배포위치(Target directory), 업데이트 판단 기준(File Update), 압축여부(File Compression) 등을 설정합니다.

업데이트 설정

프로젝트 빌드(업데이트 정보파일 생성)


업데이트 정보파일은 아래와 같은 구조를 갖습니다.



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

(문서)프로그래밍 언어 기초 - 델파이와 C++

2015.01.13 09:31

델파이와 C++ 프로그래밍 언어 기초를 다질 수 있는 문서입니다.


다들 아는 내용이겠지만 가볍게 읽어보며 다시한번 정리해보시기 바랍니다.

초급 개발자 분들은 이번 기회를 통해 언어의 기초를 다져 보기 바랍니다.



구입 및 다운로드


관련 글

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder C++, 델파이, 문법

getAwesomeness() - Delphi(참고할 만한 델파이 오픈소스)

2015.01.12 10:19

델파이 프레임워크, 라이브러리, 리소스 등을 참고할 수 있는 사이트입니다.(오픈소스 기반으로 설명합니다.)

카테고리 별로 잘 구분되어 있습니다.


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder 델파이, 오픈소스

TurboPack - XE7 지원하는 오픈소스 컴포넌트

2014.12.30 11:32

델파이는 기본 컴포넌트 외에도 외부(써드파트) 컴포넌트를 통해 기능을 손쉽게 확장할 수 있다는 장점이 있습니다.

오늘은 외부 컴포넌트 중 오픈소스로 진행되는 컴포넌트 몇가지를 소개합니다.


오늘 소개할 컴포넌트들은 로마의 델파이 개발자 Kassebaum가 엠바카데로의 (약간의)지원을 받아 최신버전(XE7)으로 업그레이드된 오프소스 컴포넌트 들입니다.(버전정보와 새로운 RTL을 적용했다고 합니다.)

❑ Orpheus

120여개 이상의 VCL 비주얼 컨트롤을 제공합니다. 특수 목정의 에디트, 그리드와 시계등을 제공합니다.

(이미지참조: http://blog.marcocantu.com/blog/2014-december-turbopack-short-video.html)

❑ Virtual Tree

이미 델파이에서 유명한 컴포넌트인데요. 매우 성능이 뛰어난 가상트리뷰 컴포넌트입니다. RAD Studio IDE에도 사용하고 있습니다.

(이미지참조: http://blog.marcocantu.com/blog/2014-december-turbopack-short-video.html)

❑ SynEdit

다양한 언어를 지원하는 구문강조(Syntax Highlight) 컴포넌트입니다. 소스코드 편집을 위한 컴포넌트입니다.

❑ Async professional

많은 것을 포함하고 있는 시리얼 포트 통신 라이브러리입니다.

❑ PowerPDF

시각적인 PDF 문서를 생성하기 위한 컴포넌트입니다.

❑ Abbrevia

압축라이브러리(PKZIP, Microsoft CAB, tar, gzip, bzip2, ...)입니다. 멀티-플랫폼(Win32, Win64, MaxOSX, iOS, Android)를 지원합니다.

❑ LockBox

암호화 라이브러리(AES, DES, 3DES, Blowfish, Twofish, SHA, MD5, ...)입니다. 멀티-플랫폼(Win32, Win64, MaxOSX, iOS, Android)를 지원합니다.

❑ 비디오로 알아보기(마르코칸투)

❑ 다운로드 및 더 알아보기

원작자의 글을 통해 더 자세히 알아보고 다운로드 할 수 있습니다.

1. Orpheus (Win32 and Win64)
2. Abbrevia (Win32, Win64, MacOSX, iOS and Android)
3. Virtual Tree (Win32 and Win64)
4. SynEdit (Win32 and Win64)
5. LockBox (Win32, Win64, MacOSX, iOS and Android)
6. Async Professional (Win32)
7. PowerPDF (Win32 and Win64)


참고 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder Open Source, Orpheus, SynEdit, Virtual Tree, XE7, 써드파트 컴포넌트, 컴포넌트

[XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기

2014.12.30 10:32

RAD Studio XE7에서는 새로운 XML DOM(Document Object Model)인 OmniXML이 추가되어 현재 총 3가지의 XML DOM을 사용할 수 있습니다.

  • MSXML
  • ADOM
  • OmniXML
XML DOM은 문자열로된 XML 데이터를 분석해 프로그래밍에서 사용할 수 있도록 구조화하는 역할을 합니다.
각 XML DOM을 비교하면 아래와 같습니다.(docwiki.embarcadero.com 참고)
구현단위전역 변수 값설명

MSXML

Xml.Win.msxmldom

SMSXML

Windows 전용, RAD Studio의 내장 XML 공급 업체 중 가장 빠름.

크로스 플랫폼에서 XML DOM 벤더를 선택하지 않으면 실행 시 런타임오류 발생.

OmniXML

Xml.omnixmldom

sOmniXmlVendor

크로스 플랫폼. ADOM보다 훨씬 빠르지 만 MSXML보다 약간 느림.

ADOM

Xml.adomxmldom

sAdom4XmlVendor

크로스 플랫폼. RAD Studio의 다른 임베디드 XML 벤더보다 느림.

결과적으로로 보면 윈도우 환경의 VCL 프로젝트에서는 MSXML을 크로스플랫폼용 FMX 프로젝트에서는 OmniXML으로 설정하는 것이 유리합니다.


XML DOM을 설정하는 방법은 TXMLDocument.DomVender를 설정하는 방법과 DefaultDOMVender로 프로젝트 전반적으로 설정하는 방법 두가지가 있습니다. 

❑ TXMLDocument.DOMVender 설정

TXMLDocument 컴포넌트의 DOMVender 속성을 설정해 해당 XML DOM 벤더의 기술을 사용합니다.

❑ DefaultDOMVender로 프로젝트 전반적으로 설정

program Project1;

uses
 System.StartUpCopy,
 FMX.Forms,
 Unit1 in 'Unit1.pas' {Form1},
 Xml.xmldom, XML.OmniXMLDom;
{$R *.res}
begin
 DefaultDOMVendor := sOmniXmlVendor;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

Xml.xmldom 유닛을 추가하고, DefaultDOMVender에 DOM Vender 전역변수를 설정하면 이후 사용되는 컴포넌트의 DOMVender가 모두 전역으로 설정한 DOMVender로 설정됩니다.

❑ 결론

  • 윈도우 VCL 프로젝트는 MSXML을 선택, 멀티(크로스)플랫폼 FMX 프로젝트에서는 OmniXML을 선택하는 것이 유리
  • XML DOM 벤더 선택은 컴포넌트 속성을 이용하거나, DefaultDOMVender 전역변수로 프로젝트 전반에 설정 가능
    • 활용) XML 분석하는 소스코드를 VCL/FMX에서 재사용할 경우 프로젝트 소스에서 설정하면 플랫폼 별 최적의 성능으로 구현 가능

참고자료



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder Delphi, Omni XML, Rad Studio, XE7, XML DOM

XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)

2014.12.24 09:31

RAD Studio(델파이, C++빌더)은 컴포넌트 기반으로 쉽고 빠르게 개발할 수 있다는 장점이 있습니다.

기본 컴포넌트도 막강하지만 외부 컴포넌트(써드파티 컴포넌트)로 더 막강한 컴포넌트 구성할 수 있습니다.


사용가능한 컴포넌트를 세어보지 않았지만 수백가지의 컴포넌트/플러그인/보조툴이 존재하고 이를 공급하는 벤더사들도 60여개 이상입니다.


엠바카데로에서는 RAD Studio XE7을 지원하는 써드파티 파트너의 컴포넌트와 툴을 잘 정리한 페이지가 있어 소개해 드립니다. 

해당 페이지에서 필요한 컴포넌트를 찾아보시고 적용해 보시기 바랍니다.



써드파티 컴포넌트와 툴 목록


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder C++빌더, Rad Studio, XE7, 델파이, 써드파티, 컴포넌트

VCL의 유용하지만 놓칠수 있는 기능 들

2014.12.12 09:23

델파이 구루인 마르코칸투가 VCL 기능 중 놓치고 있을 법한 기능을 소개하는 글을 남겨 소개드립니다

아마 이번 코드레이지9에서 발표한 내용의 일부인 것 같습니다.


최근 VCL에 추가된 기능들도 많지만 아래와 같은 유용하지만 잘 모르고 있을 법한 기능들이 있습니다.

  • Direct2D 캔버스 - 고전적인 GDI 기반의 TCanvas와 함께 Direct2D 기반 TDirect2DCanvas 클래스를 지원합니다.
  • TImage의 WIC지원 - 다양한 포맷으로 컨버팅과 이미지의 회전등의 변환을 지원합니다.
  • VCL 컴포넌트 속성추가 - 텍스트 힌트와 숫자만 입력할 수 있도록 하는 속성등 더 다양해 졌습니다.
  • 작업대화상자(TTaskDialog) - 대화상자에서 많은 것을 표현할 수 있습니다.
  • 새로운 공통대화상자(TFileOpenDialog, TFileSaveDialog)

자세한 내용은 아래 마르코칸투의 원글에서 확인할 수 있습니다.(몇몇 항목은 샘플코드 제공합니다.)

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder

델파이로 국제화된 다국어 애플리케이션 만들기

2014.12.10 13:17

델파이로 제작된 VCL 애플리케이션에서 다국어(국제화, 지역화) 지원하는 방법을 안내합니다.

파이어몽키(멀티-디바이스 애플리케이션)에서는 TLang 컴포넌트를 이용해 다국어 지원할 수 있습니다.

(동영상보기: http://tech.devgear.co.kr/delphi_news/13638)


델파이에서는 화면과 코드상의 문자를 다국어로 표현할 수 있는 기능을 제공합니다.


다국어 지원을 위해서는 총 3가지 작업을 해야 합니다.

  • 다국어 지원할 언어 추가
  • 화면의 문자열 다국어 처리
  • 코드의 문자열 다국어 처리

다국어 지원할 언어 추가

델파이에서 여러분의 VCL 프로젝트를 엽니다. 저는 샘플 형태로 아래와 같은 프로젝트를 만들었습니다.

Project > Languages > Add 메뉴를 클릭하고, 여러분의 어플리케이션에서 제공할 언어를 추가합니다.

프로젝트 매니저에 해당 언어 프로젝트가 추가됩니다.(저는 영어와 일본어를 추가했습니다.), 앞으로 관리해야 할 프로젝트(언어)이므로 프로젝트 그룹으로 저장합니다.


화면 문자열 다국어 처리

화면 문자열 다국어 처리하기 위해서는 프로젝트 매니저에서 언어별 유닛(Unit1.dfm)을 더블클릭하면 아래의 화면이 표시됩니다.

3번째 컬럼은 기본언어인 한국어 그옆으로 번역상태와 번역할 언어인 영어항목을 번역할 언어로 수정합니다.(변경한 내용은 상태에  Translated로 변경)

이 과정을 지원할 언어별로 반복해 진행합니다.

만약, 화면요소가 변경된다면 Project > Languages > Update Localized Projects 메뉴를 클릭해 항목을 동기화 할 수 있습니다. 이때 기존 작업한 내용은 유지되므로 중간중간 동기화 해서 작업하기 바랍니다.


코드의 문자열 다국어 처리

문자열의 다국어 처리는 ResourceString기반으로 진행됩니다.

제가 구현한 코드는 아래와 같습니다. 버튼을 누르면 Edit1의 내용으로 이름을 표현합니다.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format('당신의 이름은 ''%s'' 입니다.', [Edit1.Text]));
end;

위 코드를 ResourceString기반으로 변경하려면 아래와 같이 ResourceString에 문자열을 상수와 같이 선언하고 구현시 사용하도록 변경해야 합니다.

ResourceString
  ResYourName = '당신의 이름은 ''%s'' 입니다.';

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format(ResYourName, [Edit1.Text]));
end;

위와 같이 ResourceString으로 선언된 문자열은 프로젝트 매니저의 언어 프로젝트의 DRC.rs 파일을 이용해 번역할 수 있습니다.

리소스파일을 열면 델파이에서 출력하는 오류메시지들이 이미 등록되어 있습니다. 해당 문자열들도 원하신다면 번역할 수 있습니다. 그리고 제일 아래로 내려가면 여러분이 추가한 문자열을 번역할 수 있습니다.

[팁] 언어마다 다른 어순의 문자열 표현하기

Format을 이용하면 원하는 곳에 문자열을 포함해 사용할 수 있습니다.

하지만 어순이 달라진 경우 예를 억지로 들면 아래의 문자열의 '이름'과 '김현수' 두개의 항목을 Format으로 처리하려 하는데 번역자가 순서를 다르게 번역을 해버렸습니다.

  • 한국어 : 당신의 '이름'은 '김현수'입니다. - name_key > name_value 순으로 표시

  • 영어 : 'Humphery' is your 'name'. - name_value > name_key 순으로 표시

이 때 당황스러워 하지 마시구요. 아래와 같이 Format을 사용하면 입력할 내용의 순서를 지정할 수 있습니다. 좋은 팁이었습니다.^^

Format('당신의 ''%0:s''은 ''%1:s''입니다.', [name_key, name_value]);

Format('''%1:s'' is your ''%0:s''.', [name_key, name_value]);


다국어 지원 테스트 하기

화면과 코드의 문자열을 다국어 처리한 후 테스트하려면 Project > Languages > SetActive 메뉴를 클릭해 언어를 선택 후 해당 언어로 테스트할 수 있습니다. 

테스트 완료 후 프로젝트와 언어 프로젝트를 각각 빌드하면 아래와 같이 실행파일과 국가별 번역 리소스 파일(리소스 DLL)이 생성됩니다.(프로젝트이름 뒤의 3자는 ISO 639x 국가별 코드입니다.)

다국어로의 번역은 실행파일 실행 시 언어 리소스 DLL 선택 순서에 의해 선택된 리소스 DLL의 문자열로 화면과 코드의 문자열이 치환되어 다국어 지원됩니다.


배포를 위해 다른언어로 테스트하기 위해서는 실행파일과 언어 리소스 DLL을 별도 경로로 복사 하고,  윈도우 언어를 변경(윈도우8 언어변경: 외부글)해 테스트할 수 있습니다.

참고> 실행파일과 언어 리소스 DLL이 컴파일 경로에 있는 경우 시스템 로캐일이 적용되지 않습니다.

배포파일(실행파일, 언어 리소스 DLL)을 다른 경로로 옮겨서 테스트 해보기 바랍니다.

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder C++빌더, Rad Studio, 다국어지원, 델파이

  1. Blog Icon

    비밀댓글입니다

블루투스LE(Bluetooth Low Energy)의 이해

2014.12.05 09:42

RAD Studio XE7에서는 블루투스 라이브러와 컴포넌트를 통해 클래식 블루투스와 블루투스LE(BLE) 통신이 편리해 졌습니다.


컴포넌트가 있더라고 기술의 이해가 있어야 사용하고, 프로젝트에 적용을 할 수 있는데요.

마침 델파이 개발자인 곰순이(장정환)님이 블루투스 LE 관련해 이해하기 쉽게 작성한 글이 있어 공유합니다.

앞으로도 좋은 글 많이 기대하겠습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 Delphi/C++Builder ble, XE7, 블루투스, 블루투스LE