Search results for 'Rad Studio'

  1. 2014.12.30 -- [XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기
  2. 2014.12.24 -- XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)
  3. 2014.12.10 -- 델파이로 국제화된 다국어 애플리케이션 만들기 (1)
  4. 2014.11.10 -- [앱테더링] VCL앱을 모바일앱으로 쉽게 확장할 수 있는 앱테더링 자세히 살펴보기! (7)
  5. 2014.10.21 -- [XE7] OSX 요세미티 스타일 팩 다운로드 안내
  6. 2014.10.10 -- 엠바카데로 제공 프리미엄 스타일 팩 사용(VCL / FMX) (2)
  7. 2014.09.15 -- 멀티 디바이스 디자이너에 사용자 정의 View를 추가하기 (1)
  8. 2014.09.04 -- RAD Studio 데모코드 최신버전 다운로드(SVN 이용)
  9. 2014.09.02 -- 새로운 버전의 RAD Studio XE7 출시
  10. 2014.08.27 -- RAD Studio 새로운 기술 소개 세미나
  11. 2014.07.30 -- RAD Studio XE6 TChart 패치
  12. 2014.07.10 -- 인터베이스 서버(InterBase Server)에 접속이 되지 않는 경우 대처사항
  13. 2014.07.10 -- RAD Studio IDE(통합개발환경) 사용법
  14. 2014.05.27 -- Baas(Backend as a Service)와 RAD Studio(GCM, APN, 푸시알림 가능) (3)
  15. 2014.05.13 -- RAD Studio IDE의 소스코드 창과 폼 디자이너창 분리하기
  16. 2014.05.07 -- RAD Studio 64bit 디버깅 시 "unable to create process" 오류 메시지가 나오는 경우 대처방안
  17. 2014.05.02 -- [안내] Developer Direct LIVE! in 부산 (2)
  18. 2014.03.25 -- Remote Debugging(원격 디버깅) - RAD Studio(Delphi, C++Builder)
  19. 2014.03.24 -- [리뷰] C++ Builder XE5 따라잡기 LIVE!(고든리) (1)
  20. 2014.03.21 -- 사물인터넷(IoT)과 RAD Studio - 다양한 디바이스 연동

[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, 델파이, 써드파티, 컴포넌트

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

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

    비밀댓글입니다

[앱테더링] VCL앱을 모바일앱으로 쉽게 확장할 수 있는 앱테더링 자세히 살펴보기!

2014.11.10 18:35

앱테더링(App Tethering)?

앱 테더링은 2개의 개별적인 앱을 서로 연결(테더링)해서 데이터를 주고 받을 수 있는 기술입니다.

앱테더링 기술을 이용해 VCL어플리케이션에서 모바일로 데이터를 제공하면 모바일에서 뷰어만 빠르게 만들어 아주 빠르고 쉽게 모바일앱을 개발할 수 있습니다.

(모바일 앱의 동작을 다시 VCL 앱으로 전송해 사용자의 액션과 모바일 이미지등을 VCL 앱에서 사용하면 더 강력한 시스템으로 탈바꿈할 수 있습니다.)

❑ 앱테더링 컴포넌트

앱 테더링은 TTetheringManager, TTetheringAppProfile 두개의 컴포넌트를 통해 구현할 수 있습니다. 이번글에서는 각 컴포넌트의 자세한 속성과 이벤트에 대해서는 다루지 않습니다. 하지만 아래의 "앱테더링 데모를 통해 기능 살펴보기" 단계를 보시면 주요한 대부분의 속성과 이벤트를 다루고 있기 때문에 충분히 기능을 익힐 수 있습니다.

더 자세히 알고 싶은 기능(속성, 이벤트)는 엠바카데로 기술 도움말(영문)을 통해서 익혀보시기 바랍니다.

아래는 앱테더링 기술이 제공하는 대표적인 속성입니다.

앱테더링의 대표 기능

  • 동일한 서브넷에서 동반자앱 자동탐색 기능(P2P기반으로 별도의 서버 구성이 필요하지 않습니다.)
  • 지정한 IP / 지정한 서브넷(192.168.1.0: 192.168.1.1 ~ 192.168.1.255)에서 탐색 시도
  • 블루투스 기반 앱테더링
  • String / Stream 기반 데이터 전송 기능 제공(Stream이므로 사실상 모든 데이터 전송 가능)
  • 동반자앱에 공개된 Action(명령)을 원격에서 호출하는 Remote Action 기능제공
  • VCL / FMX 2개의 프레임워크 지원
    • VCL 앱을 모바일과 연결해 쉽게 모바일로 전환/확장 할 수 있는 가능성 제공
    • 모바일에서 센서를 연결하면 VCL앱을 IoT로 바로 확장 가능
아래 데모영상을 통해 여러분들의 가능성을 만들어 보시기 바랍니다.

앱테더링 데모를 통해 기능 살펴보기

아래 데모영상은 VCL 어플리케이션을 모바일 앱으로 확장하기 위해 앱테더링 기술의 가장 기본적인 부분을 설명합니다. 

데모영상을 보시고 기능을 익히신 후 앱테더링 기능을 여러분의 프로젝트에 도입하면 어떤 기능을 확장할 수 있을지 생각해 보시고 여러분의 제품에 적용해보시기 바랍니다.


위 데모는 총 9개의 (최소한의 기능의)단계를 통해 진행합니다.

  • 탐색과 접속
    • 1단계, 동일 서브넷에서 접속대상 탐색시도
    • 2단계, 탐색된 테더링 매니저 표시
    • 3단계, 선택 매니저와 연결(페어링), 비밀번호 인증
    • 4단계, 탐색된 테더링 프로필 표시
    • 5단계, 선택 페어링과 연결(페어링)
  • 데이터 송수신
    • 6단계, 문자열 데이터 전송
    • 7단계, 데이터 수신하기(문자열, 스트림)
    • 8단계, 이미지(스트림) 데이터 전송
    • 9단계, 원격지에 정의된 액션(명령) 호출

1, 동일 서브넷에서 접속대상 탐색시도하기

테더링매니저의 DiscoverManagers 메소드를 통해 주변(동일 서브넷)의 동반자 앱을 탐색합니다.

procedure TForm2.btnDiscoverManagerClick(Sender: TObject);
begin
  InitControls;

  LogAndInfo('동일 서브넷에서 접속대상을 찾습니다.');
  // (#1) 주변에서 TetheringManager 발견명령
  TetheringManager.DiscoverManagers;

  // (#2) TetheringAppProfile의 Group 기반으로 자동 연결
//  TetheringManager.AutoConnect(3000);

  //  (#3) 대상을 지정해 접속할 수 있습니다.
//  TetheringManager.DiscoverManagers(3000, 127.0.0.1);
end;

AutoConnect(#2, TetheringAppProfile의 Group이 동일한 대상으로 자동 접속), 접속 대상을 지정(#3)등 다양한 접속 방식을 제공합니다.

2, 발견된 테더링 매니저 정보표시

탐색(DiscoverManagers)이 완료되면 TetheringManager의 OnEndManagersDiscovery 이벤트가 발생하고, ARemoteManagers 파라메터를 통해 탐색된 매니저정보를 제공합니다.

procedure TForm2.TetheringManagerEndManagersDiscovery(const Sender: TObject;
  const ARemoteManagers: TTetheringManagerInfoList);
var
  Info: TTetheringManagerInfo;
begin
  cbxRemoteManagers.Items.Clear;
  for Info in ARemoteManagers do
  begin
    Log(Format('[검색된 매니저]'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s', [
      Info.ManagerIdentifier,
      Info.ManagerName,
      Info.ManagerText,
      Info.ConnectionString
    ]));
    cbxRemoteManagers.Items.Add(Format('%s(%s)', [Info.ManagerText, Info.ConnectionString]));
  end;
  if cbxRemoteManagers.Items.Count > 0 then
  begin
    cbxRemoteManagers.ItemIndex := 0;
    btnPairManager.Enabled := True;
  end;
  LogAndInfo(Format('접속 대상이 [%d]건 발견되었습니다.', [ARemoteManagers.Count]));
end;

3, 선택한 매니저와 연결(페어링)

접속할 대상 매니저를 선택 후 페어링(PairManager)을 시도합니다.

// 선택한 매니저와 연결
procedure TForm2.btnPairManagerClick(Sender: TObject);
var
  N: Integer;
begin
  if cbxRemoteManagers.ItemIndex < 0 then
    Exit;

  N := cbxRemoteManagers.ItemIndex;
  LogAndInfo(TetheringManager.RemoteManagers[N].ManagerText + ' - 매니저와 페어링 시도');
  TetheringManager.PairManager(TetheringManager.RemoteManagers[N]);
end;

// 매니저 비밀번호 설정
procedure TForm2.TetheringManagerRequestManagerPassword(const Sender: TObject;
  const ARemoteIdentifier: string; var Password: string);
begin
  Password := edtPassword.Text;

  TThread.Synchronize(TThread.CurrentThread,
    procedure begin
      LogAndInfo('[비밀번호 요청] - ' + edtPassword.Text);
    end);
end;

매니저간 페어링 시도 시 서로의 비밀번호를 통해 연결을 허용합니다. 만약 매니저간의 비밀번호가 맞지 않다면, TetheringManager 컴포넌트에서 인증오류(OnAuthErrorFromLocal, OnAuthErrorFromRemote) 이벤트가 발생하고 페어링은 실패합니다.

비밀번호는 TetheringManager.Password 속성을 통해서도 설정할 수 있습니다.

4, 발견된 테더링 프로필 정보표시

매니저간 연결(페어링)되면 TetheringManager의 OnEndProfilesDiscovery 이벤트가 발생되며 ARemoteprofiles 파라메터를 통해 탐색된 프로필 정보를 제공합니다.

// 프로필 발견완료 이벤트
procedure TForm2.TetheringManagerEndProfilesDiscovery(const Sender: TObject;
  const ARemoteProfiles: TTetheringProfileInfoList);
var
  Info: TTetheringProfileInfo;
begin
//  Log('TetheringManagerEndProfilesDiscovery');
  cbxRemoteProfiles.Items.Clear;
  for Info in ARemoteProfiles do
  begin
    Log(Format('[앱 프로필]'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s'#13#10#9'%s', [
      Info.ManagerIdentifier,
      Info.ProfileIdentifier,
      info.ProfileText,
      Info.ProfileGroup,
      Info.ProfileType

    ]));
    cbxRemoteProfiles.Items.Add(Format('%s(%s)', [Info.ProfileText, Info.ProfileType]));
  end;
  if cbxRemoteProfiles.Items.Count > 0 then
  begin
    cbxRemoteProfiles.ItemIndex := 0;
    btnPairProfile.Enabled := True;
  end;
  LogAndInfo(Format('대상 프로필 [%d]건 발견되었습니다.', [ARemoteProfiles.Count]));
end;

5, 선택한 프로필과 연결

접속할 대상 프로필을 선택(TetheringAppProfile.Connect)하여 페어링 시도합니다.

// 선택한 프로필과 연결
procedure TForm2.btnPairProfileClick(Sender: TObject);
var
  N: Integer;
begin
  if cbxRemoteProfiles.ItemIndex < 0 then
    Exit;

  N := cbxRemoteProfiles.ItemIndex;
  LogAndInfo(TetheringManager.RemoteProfiles[N].ProfileText + ' - 프로필과 페어링 시도');
  if TetheringAppProfile.Connect(TetheringManager.RemoteProfiles[N]) then
  begin
    LogAndInfo('페어링 성공!!');
    InitControls;
  end;
end;

페어링이 완료되면 데이터 전송, 데이터 수신, 원격 액션 호출등의 작업이 가능해 집니다.

6, 문자열 전달

TetheringAppProfile.SendString 메소드를 통해 명령어, 데이터등의 문자열 데이터를 전달할 수 있습니다.

procedure TForm2.btnSendStrHelloClick(Sender: TObject);
begin
  LogAndInfo('문자열 전달 - 동반자 모바일앱에 Hello 전달');
  TetheringAppProfile.SendString(
    TetheringAppProfile.ConnectedProfiles.First,
    'HELLO',
    '안녕? App Tethering!!!');
end;

procedure TForm2.btnSendStrRSClick(Sender: TObject);
begin
  LogAndInfo('문자열 전달 - 동반자 모바일앱에 ReverseString 전달');
  TetheringAppProfile.SendString(
    TetheringAppProfile.ConnectedProfiles.First,
    'ReverseString',
    '반갑습니다.');
end;

SendString 메소드는 3개의 파라메터를 전달합니다.

  1. 전송할 앱 프로필 객체
  2. 수신 시 리소스의 힌트로 받을 수 있는 설명(Description)
  3. 문자열 데이터 값
ReverseString 문자열 데이터는 상대방(모바일 앱)에서 수신 시 글자를 뒤집어(반갑습니다. > .다니습갑반) 다시 전송하도록 구현되었습니다.

7, 데이터 수신

상대방 동반자앱에서 데이터를 보내면 TetheringAppProfile의 OnResourceReceived 이벤트를 통해 데이터를 수신할 수 있습니다. 문자열 데이터, 이미지 데이터(Stream)등이 모두 OnResourceReceived 이벤트를 통해 수신합니다.

procedure TForm2.TetheringAppProfileResourceReceived(const Sender: TObject; const AResource: TRemoteResource); begin case AResource.ResType of // 데이터(SendString) TRemoteResourceType.Data: begin // ReverseString을 받은 모바일에서 전송한 응답 if AResource.Hint = 'EchoString' then LogAndInfo('EchoString : ' + AResource.Value.AsString) end; // 스트림(SendStream) TRemoteResourceType.Stream: begin // 모바일에서 전송한 이미지 if AResource.Hint = 'FMXIMG' then begin LogAndInfo('이미지 수신'); LoadImage(AResource.Value.AsStream); end; end; end; end;

AResource 파라메터 주요 속성

  • AResource.ResType
    • SendString으로 전송 시 TRemoteResourceType.Data로 SendStream으로 전송 시 TRemoteResourceType.Stream으로 수신
  • AResource.Hint
    • SendString과 SendStream의 Description 파라메터에 입력한 값을 담고 있습니다.
  • AResource.Value
    • SendString과 SendStream의 Value(AString, AStream)에 입력한 값을 담고 있습니다.

8, 데이터 전달 - 이미지전송

이미지, 파일 등의 데이터를 TStream으로 변환해 동반자 앱으로 전달 할 수있습니다.(TStream은 TMemoryStream, TFileStream, TStringStream 등의 부모클래스이므로  다양한 데이터를 전달할 수 있습니다.)

procedure TForm2.btnSendStreamImageClick(Sender: TObject);
var
  Stream: TMemoryStream;
begin
  LogAndInfo('데이터 전달 - 이미지 데이터를 TStream으로 동반자 모바일앱에 전달');
  Stream := TMemoryStream.Create;
  try
    Image1.Picture.Graphic.SaveToStream(Stream);
      TetheringAppProfile.SendStream(TetheringManager.RemoteProfiles.First,
      'VCLIMG',
      Stream
    );
  finally
    Stream.Free;
  end;
  PageControl1.TabIndex := 2;
//  TetheringAppProfile.SendStream()
end;

9, 원격지의 명령 호출(이미지 전송 요청) 

TetheringAppProfile.RunRemoteAction 메소드를 통해 원격지에 공개된 Action을 실행 할 수 있습니다.

// 원격지의 액션 호출
procedure TForm2.btnRunRemoteActionClick(Sender: TObject);
begin
  LogAndInfo('원격 명령 호출 - 원격지(동방자 모바일 앱)의 ActionSendImg 액션 호출');
  TetheringAppProfile.RunRemoteAction(
    TetheringManager.RemoteProfiles.First,
    'ActionSendImg'
  );
  PageControl1.TabIndex := 3;
end;

모바일 앱의 TetheringAppProfile에는 Actions 속성에 아래와 같이 Action이 등록되어 있습니다.

TetheringAppProfile의 Actions에 등록된 Action(명령)은 외부로 공개(IsPublic)할 수 있어 외부에서 RunRemoteAction 메소드를 통해 호출할 수 있습니다.

❑ 위 데모 소스코드 받기

앱테더링 데모 더 살펴보기...

RAD Studio XE7의 샘플 프로젝트에는 아래의 다양한 앱테더링 데모가 있습니다.

  • 앱테더링 샘플 프로젝트 경로

    • C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\RTL\Tethering

❑ BDShoppingList

  • 앱테더링 기술을 이용해 데스크탑의 쇼핑 데이터를 모바일에 제공합니다.

  • 모바일 화면에서 쇼핑항목의 구매를 선택하면 구매명령을 데스크탑으로 전달해 구매처리를 완료합니다.

  • 데스크탑과 모바일은 변경된 데이터를 수시로 동기화합니다.

  • http://docwiki.embarcadero.com/CodeExamples/XE7/en/RTL.BDShoppingList_Sample

❑ DesktopCast

❑ MediaPlayer

❑ PhotoWall


참고 글




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

    험프리.김현수 험프리.김현수 Firemonkey/기능제어 app tethering, Rad Studio, XE7, 앱테더링

    1. Blog Icon
      좋은남자

      이건 다른 질문인데요.. VCL 폼의 디자인이 깔끔한데.. 어디서 바꾸신 건가요? 데모 소스를 받아서 보니 Project - Option - Application - Appearance 에서 바꾸신 것 같지 않은데요..궁금합니다.

    2. VCL 스타일을 바꾼 것입니다. 해당 스타일은 프리미엄 스타일로 XE7 사용자들은 무료로 다운로드 및 사용할 수 있습니다.
      http://blog.hjf.pe.kr/253

    3. Blog Icon
      황영일

      안녕하세요. 반갑습니다. 앱테더링 데모에서 블루투스 아답터 설정하고 하면 접속대상를 찾지못합니다. 어떻게 하는지 알려주시면 감사 감사

    4. 혹시 페어링 하셨나요? 블루투스틑 페어링 된 상태에서 데이터를 주고 받을 수 있습니다.

    5. Blog Icon
      황영일

      블루투스 페어링도 해보았습니다. 안됩니다.
      network 테더링 하면 잘됩니다.
      아래것이 대한 것이 더궁금해서 몇자적습니다.
      클래식 블루투스및 블루투스 샘플을 테스트 하는데 페어링도 되고 서비스도 맞추었는데 소켓에 send하고 read할때 8바이트 보내면 read시 8바이트 길이가 나오는데 실제 데이터는 null입니다. xe7 샘플소스 그대로라 잘되야 될것 같은데 제가 뭘잘못했는지 이해가 되지 않습니다. 환경적인 요인인지 맨붕입니다. 도와주세요 ㅠㅠ

    6. Blog Icon
      푸름

      안녕하세요?
      항상 좋은 글 감사드립니다
      다름이 아니오라 앱테더링이라는게
      예제에서는 모바일과 윈도우인데
      모바일(안드로이드)-모바일(안드로이드)도 가능한가요?
      기본적으로 하고 싶은것은 다른 모바일의 특정폴더에서 이미지나 동영상을 가져오는걸 하고 싶습니다.

    7. 네 모바일과 모바일간에도 사용 가능합니다.

    [XE7] OSX 요세미티 스타일 팩 다운로드 안내

    2014.10.21 02:16

    얼마전 진행된 맥에서 새로운 OS인 요세미티 업데이트가 있었습니다.


    엠바카데로에서도 발빠르게 아래와 같이 2가지의 요세미티 스타일을 지원합니다.



    XE7 사용자는 아래 링크에서 다운로드 받으세요.

    요세미티 사용자에게만 요세미티 스타일로 보이고 싶으면 아래의 코드를 사용하세요.

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      {$IFDEF MACOS}
      if (TOSVersion.Major = 10) and (TOSVersion.Minor = 10) then
         Form1.StyleBook := YosemiteStyleBook;
      {$ENDIF}
    end;


    참고




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

    험프리.김현수 험프리.김현수 RAD Studio 정보 Rad Studio, XE7, 요세미티 스타일

    엠바카데로 제공 프리미엄 스타일 팩 사용(VCL / FMX)

    2014.10.10 13:09

    프리미엄 스타일 팩 사용방법

    스타일은 어플리케이션 외관을 가장쉽게 유려하게 외관을 바꾸고 외관을 일관되게 유지할 수 있는 기술입니다. 

    RAD Studio에는 기본으로 제공되는 스타일(VCL: 34가지, FMX: 22가지)외에도 더 프리미엄한 스타일을 구성할 수 있는 프리미엄 스타일 팩을 엠바카데로에서 제공합니다.

    RAD Studio 구입 시 2 종류(VCL/파이어몽키)의 프리미엄 스타일 팩을 다운로드 후 사용할 수 있습니다.

    ❑ 다운로드

    프리미엄 스타일 팩은 엠바카데로 EDN(embarcadero developer network) 사이트의 등록된 제품 다운로드 페이지에서 다운로드 가능합니다. (해당 페이지는 스타일 팩 뿐 아니라 프로모션 시 제공받는 다양한 툴들도 다운로드 받을 수 있습니다. ☞ 프로모션 보기)

    ❑ VCL 프리미엄 스타일 팩 사용하기

    VCL 스타일은 어플리케이션의 외관을 일관되게 변경하는 가장 쉽고 유용한 방법입니다.
    50여 종의 스타일을 기본 제공하고 별도의 프리미엄 스타일을 5개 추가 제공합니다.

      스타일 경로에 스타일 파일 복사

      • 다운로드 한 VCL 프리미엄 스타일 팩의 압축을 해제하면 총 5가지의 VSF(*.vsf) 파일이 있습니다.
      • VSF 파일을 VCL 스타일 경로로 복사합니다.
        • XE7기준 - C:\Users\Public\Documents\Embarcadero\Studio\15.0\Styles

        VCL 스타일 사용하기

        • RAD Studio에서 VCL Form Application 프로젝트를 열고 프로젝트 옵션(Project > Options) 호출
        • Application > Appearance 메뉴를 선택합니다.(Custom styles 항목에는 앞에서 추가한 Coral, Emerald 등의 스타일을 확인할 수 있습니다.)
        • 사용할 스타일을 선택 후 [Preview] 버튼으로 미리보기 후, 사용할 스타일의 체크박스를 선택합니다.
        • 아래 Default style에서 기본으로 사용할 스타일을 선택 후 [OK] 버튼을 누릅니다.

        VCL 스타일이 적용된 모습

        기본 데모 중 MastApp으로 스타일을 적용한 모습(C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\Database\IBX\IBMastApp)


        Coral

        Emerald

        Diamond


        ❑ 파이어몽키(FMX) 프리미엄 스타일팩 사용하기

        FMX 스타일

        • 파이어몽키 스타일 파일(*.style)은 별도의 경로에 복사하지 않아도 됩니다.(다운로드 후 편리한 경로에 압축해제 후 사용합니다.)

        • 파이어몽키 스타일은 플랫폼별로 다양하게 제공됩니다.

          FMX 스타일 사용하기

          파이어몽키 스타일은 스타일북(TStyleBook) 컴포넌트를 이용해 스타일을 사용할 수 있습니다. 

          • RAD Studio에서 Multi-Device Application 프로젝트를 열고 폼위에 TStyleBook 컴포넌트 추가
          • 폼이 스타일북을 이용할 수 있도록 StyleBook 속성을 변경 후 StyleBook 컴포넌트를 더블 클릭해 스타일 디자이너 표시
          • 스타일 디자이너에서 [Load] 버튼을 누르고 앞에서 다운로드 한 스타일 파일을 선택하고, [Apply and Close] 선택
          • 플랫폼 별 스타일을 적용하려한다면 플랫폼 뷰를 추가하고 플랫폼에 맞는 스타일 파일 선택

          파이어몽키 스타일이 적용된 모습


          AndroidCoralCrystal.style

          AndroidEmeraldCrystal.style

          AndroidDiamond.style


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

          험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 Rad Studio, style

          1. Blog Icon
            김주일

            프리미엄 스타일팩 엠바카데로 사이트 어느 메뉴에 있나요 ?

          2. 정식버전 구입 시 http://cc.embarcadero.com/myreg 으로 접속하면 목록에 나옵니다.

          멀티 디바이스 디자이너에 사용자 정의 View를 추가하기

          2014.09.15 11:16

          RAD Studio XE7에는 플랫폼과 디바이스의 폼팩터 별로 최적화된 화면을 구성할 수 있는 멀티 디바이스 디자이너 기술이 추가되었습니다.


          이제는 스마트폰의 화면구성과 태블릿의 화면구성을 아주 쉽게 차별화해 분리할 수 있게 되었습니다.



          위에는 기본적으로 제공되는 View의 목록 입니다. 최근 출시된 대부분의 스마트폰과 태블릿이 포함되어 있습니다.


          만약, 위 목록에 없는 장치의 화면을 별도록 구성하기 위해서는 여러분들이 직접 폼팩터와 플랫폼을 지정해 사용자 정의 뷰(Cusotom View)를 추가할 수 있습니다.


          패키지를 생성해 추가하는 방식인데요. 아래 링크를 참고하시면 어렵지 않게 추가할 수 있습니다.



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

          험프리.김현수 험프리.김현수 Firemonkey/UI / UX / 디자인 Rad Studio, XE7, 멀티디바이스디자이너

          1. Blog Icon
            오실장

            이것 문서대로 테스트 해봤는데 마지막단계에서 MobileDevices.xml 파일을 수정하고 델파이 IDE를 재실행하니 MobileDevices.xml 파일이 저절로 다시 원상복구 되어서 사용자 Device View 가 생성되지 않더군요.
            시간될때 확인한번 해주세요.

          RAD Studio 데모코드 최신버전 다운로드(SVN 이용)

          2014.09.04 14:03

          RAD Studio의 데모 소스코드는 RAD Studio 설치 시 함께 제공됩니다.

          (XE7 기준: C:\Users\Public\Documents\Studio\15.0\Samples.)


          RAD Studio 데모 소스코드가 소스포지를 통해서도 제공되고 있는 것을 모르시는 분들도 많습니다.

          소스포지의 경우 추가되거나 수정된 최신버전이라는 장점이 있습니다.

          RAD Studio 데모소스

          아래 링크에서 소스코드 다운로드 링크를 얻을 수 있습니다.

            사용방법

             RAD Studio의 메인메뉴 중 File > Open From Version Control 메뉴를 통해 다운로드 받을 수 있습니다.


            XE7 이후의 버전에서는 subversion으로 선택합니다.

            (XE7에서는 최근 유행하는 버전관리 시스템인 Git이 추가되었습니다.)

            • 소스포지에서 제공하는 SVN 주소 중 "svn://" 부터 다음 공백 전 까지("/trunk") 복사해 URL Repository에 입력합니다.
            • 저장할 경로를 Destination에 선택하고 OK 버튼을 누릅니다.
            • 다운로드 과정이 표시되고, 다양한 프로젝트 파일이 표시되면 프로젝트를 선택 해 데모소스를 확인합니다.

            이전버전 데모 소스코드 다운로드(XE 이후)

            버전 관리 툴 이어서 소스코드는 가지치기(branch) 되어있습니다. 아래 경로에서 원하는 버전으로 이동 후 위의 과정을 반복합니다.


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

            험프리.김현수 험프리.김현수 Delphi/C++Builder Rad Studio, 데모 소스코드, 데모소스

            새로운 버전의 RAD Studio XE7 출시

            2014.09.02 22:13

            오늘 새로운 버전의 RAD Studio XE7이 출시되었습니다.

            트라이얼 다운로드와 도움말이 모두 열렸으니 설치해서 사용해보시고, 어떤 내용이 변경되었는지 확인해 보시기 바랍니다.


            다운로드 링크

            릴리즈 항목 확인




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

            험프리.김현수 험프리.김현수 RAD Studio 정보 C++Builder, Delphi, Rad Studio, XE7

            RAD Studio 새로운 기술 소개 세미나

            2014.08.27 11:30

            서울(9월 2일)과 대전(9월 3일)에서 RAD Studio의 새로운 기술에 대해 소개하는 세미나가 있어 안내해드립니다.

            발표는 제가 직접하며, 발표되는 내용은 아래와 같습니다.

            • 기존 윈도우 어플리케이션 개발을 위한 VCL의 향상된 기능
            • 멀티 디바이스 UI를 플랫폼과 해상도에 맞게 별도로 구성하기 위한 FIreUI
            • 빠르게 개발하고 빠른 코드를 작성하는 방법
            • 새로운 기업용 모빌리티 서비스
            • 사물인터넷(IoT)을 위한 RAD Studio 기술 
            • 멀티 디바이스에서 동일한 데이터를 사용하기 위한 기술

            도움이 될만한 내용으로 다양하게 준비했으니 아직 신청하지 않으신 분들은 아래 링크로 신청바랍니다.




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

            험프리.김현수 험프리.김현수 교육, 세미나 Rad Studio, XE7

            RAD Studio XE6 TChart 패치

            2014.07.30 18:05

            RAD Studio XE6에서 포함된 TChart에서 Series를 추가하거나 선택 시 Property를 찾지 못하는 문제가 있어 패치가 필요합니다.



            다음 링크를 통해 패치파일 다운로드 후 설치하시기 바랍니다.

            • http://www.teechart.net/files/vcl/public/TeeChartLite/TeeChartLite2014RADXE6.EXE


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

            험프리.김현수 험프리.김현수 Delphi/C++Builder Rad Studio, TChart

            인터베이스 서버(InterBase Server)에 접속이 되지 않는 경우 대처사항

            2014.07.10 12:52

            RAD Studio 설치 시 함께 설치되는 인터베이스 서버와 연결 할 때 간혼 다음과 같은 오류가 발생하는 경우가 있습니다.

            그에 따른 대처사항입니다.



            Unavailable database.


            Unable to complete network request to host "localhost:3050". Failed to establish a connection.

            대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다.



            1, 인텁베이스 서버 구동여부 확인 및 구동

             인터베이스 매니저(시작 > Embarcadero Interbase XE3 > InterBase Servr Manager)로 시작


             


            2, 데이터베이스 연결 시 IP / Port로 연결

            여러버전의 델파이를 설치한 경우 매번 Interbase를 설치하게되면 기본 포트번호로 접속이 되지 않는 경우가 있습니다.

            해당경우에는 다음과 같이 TCP/IP로 접속할 수 있습니다.



            • 기본으로 설정된 값은 Protocol이 Local Server는 공백으로 되어 있습니다.

            • Protocol을 TCPIP로 설정하면 localhost/gds_db 형태로 IP(localhost)/포트(gds_db)로 슬래쉬로 구분해 지정할 수 있습니다.

            • gds_db는 인터베이스 매니저의 타이틀에 표시된 내용을 참고하시면 됩니다.(간혹 ibxe3로 구동되기도 합니다.)


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

            험프리.김현수 험프리.김현수 Delphi/C++Builder appmethod, C++Builder, Delphi, IBLite, Interbase, Rad Studio

            RAD Studio IDE(통합개발환경) 사용법

            2014.07.10 09:13

            데브기어 테크사이트(tech.devgear.co.kr)에 RAD Studio 통합개발환경을 설명하는 아주 좋은 문서가 추가되었습니다.

            한번 훓어보시고 평소 사용하지 않았던 기능도 숙지하시면 개발이 더 편하고 재미있어 질것입니다.


            참고



            그리고, 이내용은 데이비드아이(David I)가 쓴 "윈도우와 맥개발을 위한 파이어몽키 코스북"의 일부입니다.

            책의 전문을 PDF로 받으시려면 다음 링크를 통해 다운로드하세요.


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

            험프리.김현수 험프리.김현수 Delphi/C++Builder IDE, Rad Studio

            Baas(Backend as a Service)와 RAD Studio(GCM, APN, 푸시알림 가능)

            2014.05.27 11:36

            BaaS(Backend as a Service)

            BaaS는 Backend as a Service 약자로 모바일에서 필요한 Backend 기능을 추상화하여 표준 API(JSON 등)로 제공하는 클라우드 서비스의 한 종류 입니다.

            Backend as a service - http://en.wikipedia.org/wiki/BaaS


            더보기


            간단히 설명하면, 여러분이 앱을 만드는 경우 앱에서 사용하기 위한 데이터, 사용자 정보등의 Backend 기능을 여러분의 서버에 구성하지 않고, BaaS 사이트(또는 연동)에서 제공하는 기능을 설정(커스터마이징) 후 이용하는 방식입니다. 별도의 여러분의 Backend 서비스 개발 과정이 생략되어 개발 시간을 대폭 단축 할 수 있습니다.


            대표적인 BaaS 제공자로는 Kinvey, Pharse, Bass.io(국내)가 있으며 제공되는 기능은 푸시알림, SNS 연동, 사용자 관리, 데이터 관리, 이미지/사운드 등의 파일 관리 등이 있습니다.


            RAD Studio XE6에서도 새롭게 BaaS 관련된 컴포넌트가 추가되었습니다.


            현재는 대표적인 BaaS 서비스인 Kinvey와 Pharse를 제공합니다.

            BaaS 컴포넌트


            BaaS 컴포넌트는 위와 같이 제공자 컴포넌트와 서비스 기능 컴포넌트로 구분됩니다.

            서비스 기능 컴포넌트는 BaaS에서 제공되는 대표적인 기능을 사용할 수 있는 컴포넌트이며, 기능별로 추상화(표준화)되어 제공되어 제공자별로 별도로 구성하지 않아도 됩니다. 앱 개발 시 서비스 기능 위주로 개발하고 제공자를 연결하면 제공자의 서비스와 연결되도록 아주 유연한 구조로 설계가 되어있습니다.

            즉, 향후 제공자가 추가된다면, 기존에 구현된 기능을 그대로 사용하고 제공자 컴포넌트만 변경해 적용 할 수 있습니다. 


            그리고 BaaS 컴포넌트는 멀티플랫폼을 지원하여, VCL과 FMX에서 모두 사용이 가능합니다.

            즉, VCL에서 사용자 및 데이터 관리와 푸시메시지 전송등을 기존의 어플리케이션에서 적용할 수도 있습니다.

            BaaS 관련 샘플

            다음은 엠바카데로에서 제공하는 BaaS 컴포넌트 관련 설명과 샘플소스입니다. 

            (개인적으로 GCM 부분을 따라해 봤는데 아주 쉽게 되었습니다.)

            ▶ Remote Notification(GCM, APN)


            Mobile Tutorial: Using Remote Notifications


            메시징 서비스 설정 - 구글과 애플에서 클라우드 서비스 사용을 위한 설정


            클라우드 서비스에 구글과 애플 계정 연결 설정


            어플리케이션 구현 - 컴포넌트를 이용 클라우드 메시지 수신하도록 구현 및 테스트


            데이터에 트리거(Trigger)를 걸어 데이터 변경 시 데이터 전송

            데스크탑에서 클라우드 메시지 전송


            ▶ Storage 이용

            BaaS 컴포넌트를 이용한 ToDo List


            사용자 계정관리(생성)


            ▶ 파일 업로드/다운로드


            Uploading images to the cloud with BaaS in RAD Studio XE6


            C++빌더 샘플 다운로드


                ▶ VCL 어플리케이션에서 특정 사용자에게 푸쉬메시지 전송

                Custom Endpoint 설정과 어플리케이션 데모

                참고



                관련글



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

                험프리.김현수 험프리.김현수 Firemonkey/기능제어 BAAS, Delphi, Kinvey, Pharse, Rad Studio

                1. Blog Icon
                  희아

                  문의드립니다. XE6 에서의 GCM 지원은 결국 상용화되어있는 것을 이용하는 것 뿐인가요?
                  메시지밖에 안보내는데도...
                  비용을 들이지 않고 작업하려면 Send/Receive 를 통신이나 java를 이용하여 개발해 포함시켜야 하는건가요?
                  XE5 에서 개발된 샘플을 이용해보려하는데 쉽지않네요.

                2. 네 BaaS를 사용하지 않으려면 위글의 참고 항목의 링크를 확인하시면 직접 GCM/APN을 구현할 수 있습니다.
                  말씀하신대로 BaaS 컴포넌트를 이용할때 보다 상당히 어렵습니다.

                3. Blog Icon
                  정상언

                  국내 bass.io 서비스는 7월28일자로 종료되었다네요
                  https://www.facebook.com/backendservice

                RAD Studio IDE의 소스코드 창과 폼 디자이너창 분리하기

                2014.05.13 15:36

                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 재구동 




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

                험프리.김현수 험프리.김현수 Delphi/C++Builder embedded designer, Rad Studio

                RAD Studio 64bit 디버깅 시 "unable to create process" 오류 메시지가 나오는 경우 대처방안

                2014.05.07 14:55


                RAD Studio(Delphi, C++Builder)에서 64bit로 Target platform을 잡고 디버깅(F9) 시 일부 사용자에게 위와 같은 메시지가 표시되면 디버깅모드로 진입이 되지 않는 경우가 발생합니다.(Run without debugging은 정상 동작)


                위의 오류가 발생하는 경우 대처방안입니다.


                1. 32 bit OS가 설치된 윈도우로 64bit 타겟 실행 시
                2. 관리자 권한으로 RAD Studio 실행
                  • 일부 권한이 없는 디렉토리에 실행파일을 생성하지 못할 수 있습니다.
                3. Embarcadero Debugger Kernel을 윈도우 방화벽에 예외등록
                  • Debugger kernel 프로그램명 dbkw64_nn_0.exe(nn 버전)
                  • RAD Studio 실행파일 경로(e.g. c:\Program files(x86)\Embarcadero\studio\14.0\bin\)에서 dbkw64로 시작되는 파일을 방화벽에 추가 후 시도 바랍니다.(64의 경우 기존의 컴파일러와 다른 LLVM 기반으로 컴파일됩니다.)



                혹시 이슈가 발생한다면 위의 내용으로 조치해보시고 결과 답변 주시면 감사하겠습니다.^^



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

                험프리.김현수 험프리.김현수 Delphi/C++Builder dbkw64, Debugger kernel, Rad Studio

                [안내] Developer Direct LIVE! in 부산

                2014.05.02 09:21

                5월 20일 부산에서 RAD Studio XE6 세미나를 진행합니다.

                이번 세미나에서는 RAD Studio XE6의 새로운 기능과 더불어

                여러분들이 실무에서 바로 응용가능한 팁과 샘플을 제공하려 하니 많은 참여 부탁드립니다.


                http://onoffmix.com/event/27167



                이번 세미나에 참석하시면 새로운 기능에 대한 시연과 다양한 팁을 얻어가실 수 있습니다.
                ※ 참석자분들께 데모 소스코드와 발표자료가 제공됩니다!


                품질, 안정성, 성능이 강화된 RAD Studio XE6를 소개합니다.

                3040b974c1313e544e37eceeae3c25fd.pngVCL 코드베이스와 개발자에게 파워를 더하자! 
                더욱 다양해진 VCL 스타일, 새로운 태스크바 컴포넌트, 디바이스 센서까지를 이용해 최신 스타일의 윈도우 애플리케이션으로 발전하세요.
                시연) 개선된 기능과 현대식 문법을 이용해 더 빠르고 더 쉽게
                        개발할 수 있는 팁 제공



                더 빠르고 더 강력한 FireDAC을 소개합니다. 
                더욱 빠르고 간편한 엔터프라이즈급 데이터베이스 연결을 위한 FireDAC을 소개합니다. 데이터 액세스 방식을 dbExpress에서 FireDAC으로 교체하면 얼마나 빨라질까요?
                시연) dbExpress와 FireDAC간의 속도 비교,
                        BDE를 FireDAC으로 마이그레이션 팁



                FireDAC_logo02_193x175.jpg


                e748db1d43e977bb992dc2db5062dbeb.png단 하나의 코드베이스로
                윈도우/맥/안드로이드/iOS 완벽 지원!
                 

                오브젝트 파스칼(Delphi) 또는 C++, 둘 중 익숙한 언어를 선택하세요! 단 하나의 코드베이스에서 대표적인 플랫폼 앱을 모두 개발할 수 있습니다.
                시연) 모바일에서 데이터 활용 및 다양한 코드 샘플


                소개합니다 "앱 테더링"!
                VCL 애플리케이션을 모바일로 확장
                 
                여러분의 VCL 애플리케이션에 앱 테더링을 이용해 모바일로 확장하세요. 여러분의 아이디어를 더해 기회를 만들어 보세요.
                시연) 가상의 포스 머신과 모바일 사인패드 연결 데모
                1cd9de5a6c6addb0a2d532808ddb6800.png


                ※ 좌석 제한이 있으므로, 반드시 사전 접수해주시기 바랍니다.
                ※ 주차안내: 기본 30분 1,500원 / 10분 초과시 500원 / 문의: 051-441-7782 


                세션 진행자:

                speaker3.jpg김 현 수

                현재 데브기어의 엠바카데로 모바일 분야 기술 전담 팀장이자, 델파이 에반젤리스트 입니다. 다양한 세미나에서 연사로도 활약하고 있으며, 개발자들이 필요로 하는 기술자료들을 제공하고 있습니다. 
                관련 자료는 데브기어 기술자료 페이지(http://tech.devgear.co.kr) 와 블로그(http://blog.hjf.pe.kr/)에서 확인할 수 있습니다. 


                Agenda:

                시간세션
                14:30~15:00등록
                15:00~15:50VCL 코드베이스와 개발자에 파워를 더하자!
                15:50~16:30데이터베이스,통합,확장성있는 서비스와 RAD Studio의 연결
                16:30~16:50(휴식시간)
                16:50~17:30모바일 그리고 FM 애플리케이션 플랫폼
                17:30~18:00VCL 애플리케이션을 모바일로 확장



                신청


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

                험프리.김현수 험프리.김현수 교육, 세미나 Rad Studio, XE6, 부산, 세미나

                1. 와 듣고싶었>.ㅜㅜ

                2. 안타깝습니다^^ 무사히 잘 끝났습니다. 세미나 후에 뒷풀이도 즐거웠구요.

                  아까우셨다면, 6월 10일에 진행 예정인 웹세미나를 기대해 주세요.
                  참여 링크가 발표되면 포스팅해 드리겠습니다.

                  관심 가져 주셔서 감사합니다^^

                Remote Debugging(원격 디버깅) - RAD Studio(Delphi, C++Builder)

                2014.03.25 09:37


                델파이와 C++빌더로 윈도우 어플리케이션을 만드는 경우가 많지만, 

                장비에 들어가는 소프트웨어나 로봇에 들어가는 펌웨어, 소프트웨어를 만드는 경우도 대단히 많습니다.


                만약, 장비나 로봇에 들어가는 소프트웨어에서 알수 없는 오류가 나타나는 경우 디버깅을 위해 해당 장비에 델파이나 C++빌더를 설치해서 직접 디버깅하시는 분들도 있습니다.


                하지만, 그 절차가 매우 번거롭고, 라이센스 위반(RAD Studio는 개발자 라이센스입니다.) 될 수 있습니다.


                위와 같은 경우 RAD Studio의 원격디버깅(Remote Debugging)을 이용하실 수 있습니다.


                원격 디버깅 방식은 

                소스코드를 컴파일하여 실행파일을 만들고, 실행파일을 원격디버거가 설치된 원격지에 복사한 후 로컬의 IDE상에서 디버깅을 하는 방법입니다. 자세한 내용은 아래의 링크를 통해 확인하세요.



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

                험프리.김현수 험프리.김현수 Delphi/C++Builder Rad Studio, remote debugging, 원격디버깅

                [리뷰] C++ Builder XE5 따라잡기 LIVE!(고든리)

                2014.03.24 13:59

                3월 18일~19일 대전과 서울에서 "C++Builder XE5 따라잡기 LIVE!" 주제로 C++빌더 세미나가 있었습니다.

                그 내용을 간단하게 리뷰합니다.


                우선 대전과 서울의 분위기를 살짝 알려드리자면, 대전은 저희가 예상했던 참석율을 훨씬 웃돌았습니다. 신청하신 대부분의 분들이 참석해주셨고, 신청하시지 않고 오신 분들도 몇분 계셨습니다. 지방에서도 더 많은 세미나등 이벤트를 만들어야 겠다는 생각을 했습니다. 서울도 마찬가지로 신청하신 분들이 대부분 참석하셔서 데브기어 세미나장이 꽉찬 상태에서 아주 성황리에 진행 되었습니다.


                Gordon Li
                 볼랜드부터 DevCo, CodeGear에 이어 현재 Embarcadero(엠바카데로)의 중국, 대만, 아세안 지역의 수석
                 에반젤리스트로 활동중입니다. Delphi와 C++Builder에 대한 기술 경력이 깊고 풍부하며, 20여권의 도서를
                 집필하였습니다. Run! IT, CSDN 등에 100여 개의 아티클을 기고하는 등 저명한 필자로도 왕성하게 활동하고
                 있습니다. 


                발표 주제는 C/C++ 데스크탑과 모바일 개발의 제왕이라는 주제로 진행되었습니다.


                The Big Picture

                초반 개발트랜드를 소개하는 시간을 갖었습니다. 

                최근 한 연구기관을 통해 윈도우와 모바일 개발자 천여명에게 윈도우에 머무를 것인지, 모바일로 갈것인지에 대해 설문한 내용을 소개했습니다.


                우선 95%의 개발자들은 윈도우 개발을 지속적으로 진행할 것이라 답했고, 동시에 83%는 안드로이드에 67%는 iOS가 가장 중요하다고 답을 했습니다. 결과적으로 윈도우와 모바일 모두 중요하다는 결과를 확인했습니다.

                그리고, 85%의 응답자들은 UX와 성능을 위해 Scripted/interpreted 기반 솔루션보다 네이티브 앱을 원한다는 결과를 확인했습니다.(만약, 웨어러블 디바이스 용 앱을 만든다고 생각하면 결과에 대한 이해가 더 확실할 것입니다.)

                마지막으로, 95%의 응답자들이 기존의 소스코드를 모바일에서도 사용하기를 원했습니다.

                위의 설문조사를 통해 대부분의 개발자들은 각각의 플랫폼별로 따로 개발하는 것보다 하나의 소스코드를 통해 다양한 모바일 플랫폼과 데스크탑을 함께 개발하고 싶어하고, 성능이나 UX를 위해 네이티브 앱을 개발하고 싶다는 결과를 확인했습니다.

                그리고, 그 대부분을 이미 C++빌더가 지향한다는 설명을 들었습니다.



                C/C++: King Of Cross-Platform Development

                다들 아시다시피 전통적으로 C와 C++ 소스코드는 다양한 장비에 들어갔었고, 윈도우, 유닉스, HP, 메인플랫폼 등 다양한 플랫폼과 장비에 올라가는 컴파일러 입니다. 예전에는 대부분의 장비가 C/C++로 되어 있었지만, 모바일에서는 왜 C/C++로 개발할 수 없는지 고든은 의아해 했다고 합니다.


                그리고, 몇주전 발표된 CarPlay와 그 뒤를 따른 구글의 차량용 기술이 발표되었고, 기존에는 스마트폰이나 웨어러블 디바이스 개발만 가능한 줄 알았지만, 이제는 차량용 앱도 만들 수 있겠다고 생각했다 합니다.

                C/C++은 Ansi C 위원의 주도하에 구준하게 기능이 추가되고 있습니다.


                80년대에는 다양한 컴파일러간의 성능 및 최적화로 경쟁하는 시기였다.

                90년대에는 다양한 컴파일러가 사장되고 3개의 메이저 컴파일러가 최적화 이후 데스크탑 및 C/S환경을 어떻게 개발할 것인가에 대한 경재하는 시기였습니다.

                2000년대는 유니코드와 64bit등으로 경쟁하였으며, 볼랜드C는 컴파일러 등에 투자가 적어 사양되고, C++빌더가 생성성을 앞세워 출시되었습니다.(이시기에 C++빌더는 최적화등에 뒤쳐져 컴파일 속도가 경쟁 컴파일러에 뒤쳐지게됨)

                2010년대는 크로스 컴파일 및 다양한 장비가 등장해 이에 대응하는 시기가 될것이다.


                사실 C++빌더의 컴파일러 속도가 느리다는 걱정은 안해도된다. 왜냐하면, 64bit llvm의 clang 컴파일러를 사용해 가장 빠른 컴파일러로 탈바꿈되었다. 그리고 C++로 구글글래스 개발에 대해 검색하면 마음에 드는 방법이 나오지 않을 것이다. gcc가 가능하지만 구글글래스를 컨트롤하기에 아주 많은 시간이 걸릴것이다. 헬로우 월드를 만드는 것도 3~4개월의 시간이 걸리지 않을까 싶다. 하지만 C++빌더를 사용한다면 하루에 가능하다.


                C++ 컴파일러간 속도를 분석한 글을 소개했는데요. 이 글에서는 다양한 C++컴파일러간의 속도를 측정하고 성능을 기록했습니다. 결과는 너무 멋지게도 llvm이 적용된 C++빌더가 가장 뛰어난 성능을 냈다는 글입니다. 직접 확인해 보시면 아주 좋습니다.

                http://slashdot.org/topic/cloud/speed-test-2-comparing-c-compilers-on-windows/


                어도비에서 제공되는 소스코드를 통해 C++ 속도를 측정할 수 있습니다.(다음의 데모는 이 소스코드로 진행되었습니다.)

                http://stlab.adobe.com/performance/

                실제 데모를 통해 llvm의 성능을 확인하는 데모가 진행 되었습니다.

                2배~5배이상의 개선된 속도를 확인할 수 있었습니다.(bcc 32bit vs llvm 64bit)

                llvm은 개발자가 작성한 코드를 최고의 성능을 내도로 최적화 하는 작업을 진행합니다. 그래서 같은 코드라도 llvm 컴파일러는 더 좋은 성능을 낼 수 있습니다.

                (예를 들면 반복문(loop)에서 상수등과 같이 변하지 않는 코드는 최적화 과정에서 루프 밖으로 빠지고, 한번만 수행되도록 최적화 됩니다.)

                Introducing FIREDAC

                FireDAC은 BDE, dbExpress, ODBC등의 전통적인 데이터 엑세스에서 모바일에서 다양한 엑세스를 지원하기 위한 새로운 데이터 엑세스 컴포넌트이다.

                FireDAC의 경우 별도의 데이터 엑세스 클라이언트를 설치하지 않고 Native Driver를 통해 각 DBMD에 직접(Direct) 접속이 가능하다.

                BDE와 매우 비슷하지만 성능 및 사용성이 매우 좋다. 그리고 일관성 있는 Interface로 여러가지 DB플랫폼에 접속이 가능하다.



                실제 데모를 통해 dbExpress보다 개선된 속도와 DML을 이용할경우 10배이상 개선된 속도를 확인할 수 있었다.

                (2000건의 데이터 Insert 기준)


                One Codebase, One Team, One Schedule

                제일 중요한 가치인 하나의 코드와 하나의 팀, 하나의 스케쥴 그리고 예산에 대해 설명을 했습니다.

                하나의 제품을 플랫폼 별로 다르게 개발하면 여러개의 팀과 그 팀간의 스케쥴이 복잡해 지고 결과적으로 너무나 많은 예산이 들지만, 하나의 코드로 하나의 팀을 운영한다면, 하나의 스케쥴로 진행이 되어 예산도 상당히 아낄수 있습니다.

                당연히 기업의 입장에서는 가야할 길인 것 같습니다.

                대만에 있는 DataSnap 서버와 연동하여 PC와 모바일용 앱을 시연했습니다. 스케쥴을 다운로드하고, 현재의 위치를 체크인하고, 지정된 스케쥴에 노트를하고 상태를 바꾸는 앱을 아주 쉽게 만들 수 있을것 같습니다.



                새로운 REST Client를 소개하고 대만의 시에서 제공하는 자전거 점포 정보를 Rest API를 기반으로 아주 쉽게 모바일 서비스를 만드는 방법을 설명과 데모로 진행 되었습니다.





                여러분들의 데이터는 DataSnap 또는 BAAS(Backend As A Service)를 통해 PC와 모바일로 아주 쉽고 편리하게 데이터를 연동할 수 있습니다.


                세미나의 내용을 글로 표현한다는것이 참 어렵습니다. 그 당시의 분위기와 열기를 빼니 글이 건조해지는 느낌이네요^^

                세미나에 참석하지 못하신 분들을 위해 간단하게나마 글로 대신했지만, 다음 기회에는 꼭 세미나에 참석하셔서 현장의 분위기를 느껴보시길 부탁드립니다.


                감사합니다.


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

                험프리.김현수 험프리.김현수 교육, 세미나 C++ Builder, C++빌더, Gorden Li, Rad Studio, XE5, 고든리

                1. 볼랜드 포럼에 남병철님의 글도 참고하시면 좋습니다.
                  http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=24550

                사물인터넷(IoT)과 RAD Studio - 다양한 디바이스 연동

                2014.03.21 15:33



                 얼마전 애플에서 CarPlay를 발표했습니다. CarPlay는 자동차와 아이폰을 연결 후 시리를 통해 아이폰의 일부기능을 자동차에서 사용할 수 있도록 해주는 방식입니다. 이미 유튜브와 SNS등에 페라리, 벤츠, 볼도에 탑제된 동영상이 올라와 많이들 보셨을 것입니다.

                (http://www.apple.com/kr/ios/carplay/?cid=wwa-kr-kwn-features-com)


                 그리고, 애플의 CarPlay 발표 다음날 구글에서 Projected Mode를 발표했습니다. Projected Mode는 메르세데스-벤츠에 탑재될 예정으로 보이는 기술로 애플의 CarPlay의 기능을 대체하고 구글의 서비스와 연동해 네비게이션 등의 기능을 사용하실 수 있을 것으로 예상됩니다.(http://www.androidauthority.com/google-projected-mode-353022/)


                출처 : http://www.bizwatch.co.kr/?mod=info_view&uid=234

                 위의 스마트카가 이슈화 되기 앞서 이미 구글 글래스와 삼성의 겔럭시 기어등 웨어러블 디바이스(Wearable device)가 출시되었고, 구글글래스의 경우 SDK와 함께 이미 많은 개발자들의 관심과 새로운 시도가 있었습니다.

                 또한, 몇일 전 모토로라에서도 아주 멋진 디자인의 모토360이라는 스마트 시계를 발표했습니다. 


                 이렇듯 다양한 스마트 자동차, 스마트 안경, 스마트 시계 등이 나오고 있는 상황이 사용자 입장에서는 아주 좋지만, 개발자 입장에서는 어떻게 접근할까 고민이 될 것 같은데요. 사실 RAD Studio(델파이, C++빌더) 개발자들에게는 좋은 소식이 아닐까 싶습니다.


                 왜냐하면, 스마트 자동차, 스마트 안경, 스마트 시계의 OS가 iOS와 안드로이드 플랫폼이기 때문에 멀티플랫폼 개발이 가능한 델파이와 C++빌더로 개발이 가능하기 때문입니다.

                이제는 RAD Studio로 모바일 디바이스 개발 뿐만 아니라 다양한 스마트안경, 스마트 자동차, 스마트 시계까지도 개발이 가능하다고 생각하니 너무 좋네요.^^


                 더 반가운 소식은 아래의 그림과 같이 이미 RAD Studio로 다양한 기기에 연동하는 사례가 있었습니다. 그 사례는 Embarcadero Technolgies(이하 엠바카데로)의 Youtube 채널을 통해 공개 되었습니다. 그 동영상의 중심에는 Jim McKeeth가 있었습니다.




                짐 맥키트(Jim McKeeth)

                짐 맥키트는 렘오프젝트 소프트웨어 등 20년이 넘는 오랜 소프트웨어 개발 경력의 델파이와 함께 하였습니다. 

                현재는 엠바카데로 테크놀러지스의 개발자 에반젤리스트팀장 으로써 엠바카데로 MVP 프로그램을 이끌고 있으며 전세계에서 열리는 여러 컨퍼런스에서 델파이와 모바일 개발에 대한 발표자로써도 바쁘게 활동하고 있습니다. 

                짐 맥키트는 스택 오버플로우(Stack Overflow) 상 최초로 델파이 뱃지를 받았으며 지금도 delphi.org(http://www.delphi.org) 팟캐스트에서 델파이 인터뷰와 기타 델파이 뉴스를 공유하고 있습니다.



                오늘은 그가 발표한 동영상 중 구글 글래스 영상을 소개합니다.


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

                험프리.김현수 험프리.김현수 RAD Studio 정보 C++Builder, carplay, Delphi, Firemonkey, Google Glass, IOT, Jim McKeeth, Rad Studio