Search results for 'Delphi/C++Builder'

  1. 2014.12.24 -- XE7을 지원하는 써드파티 컴포넌트와 툴 목록(엠바카데로 제공)
  2. 2014.12.12 -- VCL의 유용하지만 놓칠수 있는 기능 들
  3. 2014.12.10 -- 델파이로 국제화된 다국어 애플리케이션 만들기 (1)
  4. 2014.12.05 -- 블루투스LE(Bluetooth Low Energy)의 이해
  5. 2014.12.02 -- [XE7] "Color to gray" 변환 알고리즘을 병렬(Parallel)로 처리하기
  6. 2014.11.27 -- 환경파일에서 "The imported project file could not be loaded. '', hexadecimal value 0x01, is an invalid character." 오류 발생 시 조치사항
  7. 2014.11.03 -- 더 쉬운코드, 더 유연한 코드를 작성할 수 있는 현대식 문법
  8. 2014.11.03 -- 데브기어에서 제공하는 델파이 문법으로 문법을 다시 익혀보세요.
  9. 2014.10.29 -- VCL 스타일 커스터마이징 하는 방법
  10. 2014.09.04 -- RAD Studio 데모코드 최신버전 다운로드(SVN 이용)
  11. 2014.08.27 -- 가끔 사용해 헛갈리는 DisplayFormat(FormatFloat)
  12. 2014.08.18 -- System.Zip.TZipFile - 기본 압축라이브러리
  13. 2014.08.14 -- 델파이 실행 시 EditorLineEnds.ttr 파일을 만들 수 없다는 오류 메시지 원인과 해결책 (4)
  14. 2014.07.30 -- RAD Studio XE6 TChart 패치
  15. 2014.07.30 -- 델파이(그리고 C++빌더) IDE에서 Github 사용하기 (2)
  16. 2014.07.22 -- OXml(XML 라이브러리) 소개
  17. 2014.07.22 -- 델파이를 이용해 구글크롬캐스트와 연결
  18. 2014.07.14 -- TFileStream 기반 파일진행 상황을 보여주기
  19. 2014.07.10 -- 인터베이스 서버(InterBase Server)에 접속이 되지 않는 경우 대처사항
  20. 2014.07.10 -- RAD Studio IDE(통합개발환경) 사용법

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

2014.12.24 09:31

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

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


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


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

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



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


저작자 표시 비영리 동일 조건 변경 허락
신고

험프리.김현수 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)

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

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고

험프리.김현수 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)을 다른 경로로 옮겨서 테스트 해보기 바랍니다.

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고

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

  1. Blog Icon

    비밀댓글입니다

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

2014.12.05 09:42

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


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

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

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

저작자 표시 비영리 동일 조건 변경 허락
신고

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

[XE7] "Color to gray" 변환 알고리즘을 병렬(Parallel)로 처리하기

2014.12.02 11:56

RAD Studio XE7에 새롭게 추가된 주요 기능 중 하나인 병렬(패러럴) 컴퓨팅 라이브러리는 코드를 멀티코어 CPU를 모두 활용해 동작할 수 있도록 구현하는 기술입니다.(오브젝트 파스칼과 C++에서 데스크탑과 모바일에서 사용할 수 있습니다.)


이번 글에서는 병렬 컴퓨팅 라이브러리를 활용하는 예제를 소개합니다.

예제는 컬러이미지를 회색톤으로 변환하는 그래픽 작업에서 병렬 컴퓨팅 라이브러리를 이용해 성능을 개선합니다.

(그래픽 작업과 같이 연산이 많은 작업을 비동기로 멀티코어를 활용한다면 크게 성능개선을 할 수 있습니다.)



아래 코드와 같이 기존 코드를 손쉽게 비동기 작업으로 변환 할 수 있습니다.

기존 코드(No Parallel)

procedure ToGrayPixelsNoParallel(aBitmap: Graphics.TBitmap; cg: TColor2Grayscale = c2gLuminosity);
var w, h: integer;
begin
  if aBitmap <> nil then
    for h := 0 to aBitmap.Height - 1 do
      for w := 0 to aBitmap.Width - 1 do
        aBitmap.Canvas.Pixels[w,h] :=
          ColorToGray(aBitmap.Canvas.Pixels[w,h], cg);
end;

개선된 코드(Parallel 사용)

procedure ToGrayPixelsParallel(aBitmap: Graphics.TBitmap; cg: TColor2Grayscale = c2gLuminosity);
var h: integer;
begin
  if aBitmap <> nil then
    TParallel.For(0, aBitmap.Height-1,
      procedure(h: integer)
      var w: integer;
      begin
        for w := 0 to aBitmap.Width - 1 do
          aBitmap.Canvas.Pixels[w,h] :=
            ColorToGray(aBitmap.Canvas.Pixels[w,h], cg);
      end
    );
end;

관련 글



저작자 표시 비영리 동일 조건 변경 허락
신고

험프리.김현수 Delphi/C++Builder vcl, XE7, 병렬 컴퓨팅 라이브러리

환경파일에서 "The imported project file could not be loaded. '', hexadecimal value 0x01, is an invalid character." 오류 발생 시 조치사항

2014.11.27 16:07

델파이(or C++빌더)의 일부 버전과 환경에서 발생하는 이슈입니다.

❑ 현상

델파이 실행 후 컴파일 시 아래와 같은 오류 발생(빈 프로젝트에서도 발생)


[Fatal Error] The imported project file could not be loaded. '', hexadecimal value 0x01, is an invalid character. Line 22, position 71.  C:\Users\Clint\AppData\Roaming\Embarcadero\BDS\11.0\environment.proj

대상 버전 : RAD Studio XE ~ XE4(추정)

(발생되는 버전마다 아래의 해결방안으로 처리 가능)

❑ 원인

environment.proj(환경파일)의  DEVMGR_SHOW_DETAILS 항목에 "0X01"(SOH) 헥사값이 포함되어 오류발생



헥사값이 포함되는 이유는 

델파이에서 로딩 시 시스템 변수(DEVMGR_SHOW_DETAILS) 값을 환경파일에 기록하는데 다른 프로그램에서 시스템 변수를 덮어 씌운것으로 보입니다.


위 이유로 컴파일 시도 시 환경파일에 포함된 헥사값 때문에 오류가 발생합니다.

❑ 조치방법(해결방안)

아래의 과정으로 시스템 변수를 공백으로 재선언하면 시스템 변수가 아닌 재선언된 값이 환경변수에 저장되어 문제가 해결됩니다.

1, (Delphi IDE) 툴 옵션 창(Tools > Options) 표시

2, Envrironment Variables 메뉴선택

3, System variables에서 DEVMGR_SHOW_DETAILS 선택

4, Override System Variable 창에서 Varable value를 공백("")으로 입력 후 OK

참고글



저작자 표시 비영리 동일 조건 변경 허락
신고

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

더 쉬운코드, 더 유연한 코드를 작성할 수 있는 현대식 문법

2014.11.03 14:42

현대식 문법

현대식 문법으로 여러분의 코드를 더 짧게, 더 쉽게, 더 유연하게 작성할 수 있습니다.

아래 간단한 문법소개와 샘플을 통해 어떤 기능을 하는지 소개합니다. 하지만, 여러분의 코드에 적용하기 위해서는 더 깊은 이해가 필요합니다. 엠바카데로 기술문서와 현대식 문법을 더 자세히 익힐 수 있는 도서를 소개해 드리니 참고하셔서 더 다양한 문법으로 더 강력한 코드를 작성해보시기 바랍니다.


11월 13일(서울), 11월 20일(대구)에 열리는 "VCL 애플리케이션을 더욱 멋지게 'Developer Direct LIVE!'" 세미나에서도 해당 내용을 직접 들어볼 수 있으니 신청하셔서 직접 들어보시다면 더 도움이 될것입니다.


❑ 타입헬퍼(Type Helper)

타입헬퍼는 클래스, 레코드, 열거형, 타입의 기능을 확장할 수 있는 문법입니다.


아래 예제와 같이 열거형의 기능을 확장하고 기존 TPicture 클래스의 기능을 확장하는 방식으로 활용할 수 있습니다.

type
  TGeoDirection = (North, East, South, West);
  // 열거형을 만자열로 변환하는 기능 추가
  TGeoDirectionHelper = record helper for TGeoDirection
    function ToString: string; inline;
  end;

  // URL 이미지를 로드하는 기능 추가
  TPictureHelper = class helper for TPicture
  public
    procedure LoadFromUrl(AUrl: string);
    procedure LoadFromUrlWithThread(AUrl: string);
  end;

function TGeoDirection.ToString: string;
begin
  case Self of
      TGeoDirection.North:  Result := '북쪽 (N)';
      TGeoDirection.East:   Result := '동쪽 (E)';
      TGeoDirection.South:  Result := '남쪽 (S)';
      TGeoDirection.West:   Result := '서쪽 (W)';
    else
      raise Exception.Create('Unknown "TGeoDirection" value');
  end;
end;

var
  Direction: TGeoDirection;
begin
  Direction := South;
  ShowMessage(Direction.ToString);

  Image1.Picture.LoadFromUrl('http://abc.com/Image.jpg');
end;

더 알아보기

❑ 제너릭(Generic)

클래스와 메소드에서 사용하는 데이터 타입을 사전에 정하지 않고 유연하게 사용할 수 있는 문법입니다.

구현 시 데이터 타입을 지정해 사용할 수 있어 하나의 클래스(메소드)를 다양한 데이터 타입으로 사용할 수 있습니다.


아래의 예제에서는 전통적인 클래스(TClassicSIPaire) 형식은 타입을 지정해 클래스를 만들고,

제너릭 클래스의 경우 TKey, TValue 두개의 타입인자를 통해 사전에 데이터 타입을 정하지 않아, 재선언(TSIPaire) 해 사용하거나 구현 시 데이터 타입 지정(KeyValue3: TPair<string, Integer>)하는 등 유연하게 사용할 수 있습니다.

type
  TClassicSIPair = class
   private
     FKey: String;
     FValue: Integer;
   public
     function GetKey: String;
     procedure SetKey(Key: String);
     function GetValue: Integer;
     procedure SetValue(Value: Integer);
     property Key: string read GetKey write SetKey;
     property Value: Integer read GetValue write SetValue;
   end;

   TPair<TKey,TValue> = class
   private
     FKey: TKey;
     FValue: TValue;
   public
     function GetKey: TKey;
     procedure SetKey(Key: TKey);
     function GetValue: TValue;
     procedure SetValue(Value: TValue);
     property Key: TKey read GetKey write SetKey;
     property Value: TValue read GetValue write SetValue;
   end;

  TSIPair = TPair<string, Intege>;
  TSSPair = TPair<string, string>;

procedure TForm1.Button1Click(Sender: TObject);
var
  KeyValue1: TClassicSIPair;
  KeyValue2: TSIPair;
  KeyValue3: TPair<string, Intege>;

  I: Integer;
  ListUser1: TObjectList;
  ListUser2: TObjectList<TUserData>;
begin
  KeyValue1 := TClassicSIPair.Create;         // 전통적인 클래스
  KeyValue2 := TSIPair.Create;                // 닫힌 생성자형식 제너릭
  KeyValue3 := TPair<string, Intege>.Create; // 열린 생성자형식 제너릭

  KeyValue1.Key := '사원번호';
  KeyValue1.Value := 123456;
  KeyValue2.Key := '사원번호';
  KeyValue3.Key := '사원번호';
  // 만약? Value 가 Integer에서 string으로 변경된다면? TClassicSSPaire 클래스를 새로 생성해야 함

  KeyValue1.Free;
  KeyValue2.Free;
  KeyValue3.Free;

  // 중략
  for I := 0 to ListUser1.Count - 1 do
  begin
    Obj := ListUser1[I];
    User := TUserData(Obj);

    Log(User.ToString);
  end;

  for User in ListUser2 do
    Log(User.ToString);
//    ListUser2.Items[0].ToString
end;

더 알아보기


❑ 익명 메소드(Anonymous Method)

메소드(procedure, function)를 변수와 파라메터 형태로 사용할 수 있는 문법입니다.


아래 예제는 3초 후에 메시지를 표시하는 기능을 익명 메소드를 통해 구현했습니다. 익명 메소드를 사용하면 원하는 로직을 변수에 저장 후 원하는 시점에 호출하는 방식등으로 사용할 수 있습니다.

// 지정된 시간 이후에 파라메터의 메소드를 실행
procedure DelayProc(ADelay: Integer; AProc: TProc);
begin
  Sleep(ADelay);
  AProc;
end;

var
  Noti: TProc;
  StrToIntFunc: TFunc<string, Integer>;
begin
  DelayProc(3000, procedure
    begin
      ShowMessage('Delay Message');
    end);

  Noti := procedure
      begin
        ShowMessage('Anonymous Method');
      end;
  Noti;

  StrToIntFunc := function(AStr: string): Integer
    begin
      Result := StrToIntDef(AStr, 0);
    end;
  ShowMessage(StrToIntFunc('100').ToString);
end;

더 알아보기


문법을 익힐 수 있는 도서

❑ 온라인 문서

엠바카데로 개발툴 온라인 도움말


❑ 도서

관련글



저작자 표시 비영리 동일 조건 변경 허락
신고

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

데브기어에서 제공하는 델파이 문법으로 문법을 다시 익혀보세요.

2014.11.03 14:02

10가지 기능을 아는 것보다 문법을 잘 아는 것이 더 효과적일 수 있습니다.

❑ 델파이 문법


저작자 표시 비영리 동일 조건 변경 허락
신고

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

VCL 스타일 커스터마이징 하는 방법

2014.10.29 13:29

VCL 스타일을 이용하면 VCL 어플리케이션 외관을 멋진 UI로 일관되게 탈바꿈 할 수 있습니다.


VCL 스타일은 프로젝트 옵션(Project > Options > Application > Appearance)을 이용해 사용할 수 있습니다.

기본으로 제공되는 약 50여개의 VCL 스타일을 활용하면 멋진 VCL 애플리케이션의 외관을 만들 수 있습니다.


만약, 여러분만의 VCL 스타일이 필요하거나 부분적으로 스타일을 변경하고 싶은 경우 아래의 글을 참고해 여러분만의 VCL 스타일을 만들거나, VCL 스타일을 커스터마이징해서 사용하시기 바랍니다.



관련글



저작자 표시 비영리 동일 조건 변경 허락
신고

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

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) 되어있습니다. 아래 경로에서 원하는 버전으로 이동 후 위의 과정을 반복합니다.


    저작자 표시 비영리 동일 조건 변경 허락
    신고

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

    가끔 사용해 헛갈리는 DisplayFormat(FormatFloat)

    2014.08.27 17:15

    숫자에 콤마를 포함하는 등으로 문자열 변환을 많이하는데요. 

    포맷이 어떤건지 매번 헛갈립니다. 이번 기회에 확실히 익혀 두시기 바랍니다.


      ShowMessage('##### : '+FormatFloat('#####', float));
      ShowMessage('00000 : '+FormatFloat('00000', float));
      ShowMessage('0     : '+FormatFloat('0'    , float));
      ShowMessage('#,##0 : '+FormatFloat('#,##0', float));
      ShowMessage(',0    : '+FormatFloat(',0'   , float));




    저작자 표시 비영리 동일 조건 변경 허락
    신고

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

    System.Zip.TZipFile - 기본 압축라이브러리

    2014.08.18 15:12

    델파이와 C++빌더에서 기본으로 압축 라이브러리가 제공됩니다.(XE2 버전부터 제공)

    저도 언뜻 들어봤는데 오늘 문의가 있어 정식으로 확인해봤습니다.



    프로퍼티를 보면 아주 간소합니다.

    가장 기본적인 압축 및 해제가 필요한 경우 가볍게 사용하면 좋겠습니다.


  • System.Zip.TZipFile.Open
  • System.Zip.TZipFile.Close
  • System.Zip.TZipFile.Read
  • System.Zip.TZipFile.Add
  • System.Zip.TZipFile.Extract
  • System.Zip.TZipFile.ExtractAll
  • System.Zip.TZipFile.FileName
  • System.Zip.TZipFile.FileInfo
  • System.Zip.TZipFile.FileComment
  • System.Zip.TZipFile.ExtractZipFile
  • System.Zip.EZipException

  • 물론 막강한 기능이 필요하신 경우 아래의 서드파티 컴포넌트를 이용할 수도 있습니다.
    (목록은 추천 순이 아닙니다. 몇가지 압축관련 서드파티 컴포넌트 사이트 나열한 것입니다. 직접 검토해 보고 결정하시기 바랍니다.)


    양영필님이 작성한 내용도 첨부합니다.(샘플 소스 포함)


    저작자 표시 비영리 동일 조건 변경 허락
    신고

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

    델파이 실행 시 EditorLineEnds.ttr 파일을 만들 수 없다는 오류 메시지 원인과 해결책

    2014.08.14 18:02

    오늘 몇분의 델파이 개발자분들에게 윈도우 보안 업데이트 이후 

    델파이와 C++ 빌더 실행 시 아래와 같은 메시지가 나오고 실행되지 않는 현상이 발생했습니다.

    (델파이 2006, C++빌더 2009 버전을 사용 중인 개발자 분들입니다.)


    오늘 인터넷 뉴스를 확인하니 이번 보안 업데이트에서 일부 PC에서 부팅이 되지 않는 등의 문제가 발생되었습니다.

    MS 측에서도 문제가된 PC에 보안업데이트 삭제를 권고했으나, 공개적으로 알리지는 않고 있습니다.


    현상

    • 델파이, C++빌더 실행을 2회 이상 한 경우 아래 메시지 발생


    원인


    EditorLineEnds.ttr(True Type Font: 폰트파일)을 일부 버전의 델파이(C++ 빌더) 구동 시 내부적으로 사용


    2014년 8월 12일 발생 윈도우 보안업데이트(MS14-045)에 다음 내용이 포함

    • 윈도우 기본 폰트경로 이외에 설치된 폰트파일 수정 제한


    결론


    이번 업데이트의 경우 윈도우 보안정책이 변경되며 발생한 이슈로 지원기간이 지났지만 엠바카데로가 패치를 제공해 주길 바래봅니다.^^

    해당 이슈 발생확인 버전은 다음과 같습니다.

    • Delph 2006
    • Delphi 2007
    • C++빌더 2009
    • C++빌더 2010


    보안 업데이트 시 참고하시기 바랍니다.


    PS - 다행인 것은 IDE 최초 실행시에는 오류가 발생하지 않습니다.(보안 업데이트 하신 분들은 주의하시기 바랍니다.)


      추가

      김성동님께서 IDE Fix Pack 설치 후 증상이 발생하지 않는다는 정보를 주셨습니다.

      장성호님께서 사무실 직원들의 경우 해당 보안 업데이트 삭제 시 문제가 해결되었다는 의견 주셨습니다.(단, 본인은 해결되지 않은 것으로 보아 완벽한 해결책은 아닌 것 같습니다.)


      저작자 표시 비영리 동일 조건 변경 허락
      신고

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

      1. Blog Icon
        아직도 delphi 쓰는 사람

        임시변통
        %temp%\EditorLineEnds.ttr 파일의 이를을 바꿔주면 일단은 IDE가 돌아 감.
        1. 다음 번 컴퓨터 부팅 후 이름을 바꾸었던 %temp%의 파일들을 삭제하시면 됩니다.
        아래 사이트에 그렇게 해주는 배치파일 스크립트 있네요.
        http://www.danielmagin.de/blog/index.php/2014/08/windows-update-disable-delphi-2007-2010/
        2. IDEFixPack 써보기
        저는 아직 써보지 않았지만...
        http://andy.jgknet.de/blog/2014/08/editorlineends-ttr-idefixpack-users-are-not-affected/

      2. 소중한 정보 감사합니다^^

      3. Blog Icon
        미스터몽키

        윈도우7 32비트 델파이2007사용중 며칠전 간만에 윈도우업데이트 했더니 위의 문제발생하여 업데이트 내역보니 보안업데이트(KB2982791) 이 없는데 발생했습니다. 그래서 확인해 보니
        http://stackoverflow.com/questions/25295980/delphi-2006-2010-error-cannot-create-file-c-users-admin-appdata-local-temp-ed
        보안업데이트( KB2993651) 로 바뀌었다는 내용이 댓글에 있네요
        그래서 KB2993651 을 삭제했지만 그래도 해결되지 않았습니다.
        결국 http://andy.jgknet.de/blog/ide-tools/ide-fix-pack/ 의
        IDE Fix Pack 2007 4.4 (Win8 is not supported) 설치로 해결했습니다.

      4. 그래도 IDE Fix pack 설치해서 해결되셨다니 다행입니다^^

      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


      저작자 표시 비영리 동일 조건 변경 허락
      신고

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

      델파이(그리고 C++빌더) IDE에서 Github 사용하기

      2014.07.30 17:30

      최근 버전 관리 시스템으로 Git을 사용하는 프로젝트가 상당히 많아졌습니다.


      델파이 오픈소스 프로젝트 역시 Github에 많이 올라오는데요. 델파이에서 가장 쉽게 Github의 소스코드를 사용하는 방법을 공유합니다.(소스코드 많이 오픈해 주세요.)

      델파이에서 Github 소스코드 사용

      델파이 IDE에는 서브버전(SVN) 클라이언트가 기본적으로 포함되어 있습니다.

      그리고 Github에서도 서브버전 인터페이스를 제공하고 있습니다. 

      이 2가지를 SVN 인터페이스르 연결하면 델파이 IDE 상에서 Github의 소스코드를 읽고 쓸 수 있습니다.

      ❑ Subversion Checkout URL 복사

      먼저 Github에서 참고할 프로젝트 페이지로 이동합니다.(저는 코드아카데미 데모 프로젝트 페이지에서 안내해 드립니다.)


      위 화면의 오른쪽 하단을 보시면 푸른색 강조와 붉은색 강조한 영역이 있습니다.


      먼저 푸른색 강조한 부분은 Zip파일로 프로젝트 소스코드를 다운로드 하는 방법입니다. 제일 확실하지만 다운로드가 전부입니다. 단순한 소스코드만 참고하실 때 이방법을 사용합니다.


      붉은색 강조한 부분을 보시면 아래에 Subversion 링크가 있고 해당 링크를 누르면 Subversion checkout URL이 표시됩니다.

      이 URL을 복사(우측 클립보드 버튼 클릭)합니다. 복사한 링크는 다음과 같습니다.

      ❑ Github(SVN) 프로젝트 열기

      델파이를 실행하고 File > Open From Version Control 메뉴를 선택합니다.


      다음과 같은 Checkout 창이 표시되고 아래 정보를 입력하고 OK 버튼을 누릅니다.

      • URL of Repository:
        • Github에서 복사한 Subversion Check URL을 입력합니다.
      • Destination: 
        • 프로젝트 파일이 저장될 경로를 입력(선택) 합니다.


      OK 버튼을 누르면 뒤의 그림과 같이 소스코드를 다운로드 받는 목록이 나오고 다운로드가 완료되면 앞의 화면과 같이 다운로드 받은 파일 중 오픈할 프로젝트(또는 프로젝트 그룹) 목록이 표시됩니다.(코드아카데미에는 현재 1개의 프로젝트만 있어 목록이 하나만 나옵니다.)

      선택 후 OK 버튼을 누르면 프로젝트가 오픈됩니다. 이후 과정은 다운로드 받은 소스코드로 로컬에서 진행됩니다.


      ❑ Github(SVN)에 수정내용 적용하기

      (이 내용은 본인이 수정권한이 있는 프로젝트에 한해 가능합니다. 여러분들이 앞의 과정을 통해 다운로드 받은 프로젝트에서는 아래 과정을 따라할 수 없으니 여러분께서 Github 게정을 직접 만들고 프로젝트 생성 하셔야 수정내용을 적용할 수 있습니다.)


      수정내용을 Github에 적용하는 기능도 서브버전의 기능을 이용합니다.

      저는 내려받은 소스코드에 Github URL을 안내하는 주석을 추가(변경)하고 Github에 적용(Commit)합니다.

      Commit 기능은 다음 방법을 통해 이용할 수 있습니다.

      • 프로젝트 매니저에서 우측 마우스 팝업 메뉴의 Subversion > Commit
      • 코드 에디터에서 우측 마우스를 누르고 Version Control > Subversion > Commit


      Commit 메뉴를 선택하면 아래와 같이 Commit 윈도우가 표시되고, 변경된(Modified) 파일 목록이 표시됩니다.

      • 저장소에 적용할 항목을 선택하고 
      • 수정한 내용을 Comment 입력란에 입력하고
      • Commit 버튼을 눌러 적용합니다.
      • 계정 입력을 위한 창이 뜨면 다음을 입력합니다.(세션이 유지되기 때문에 처음만 인증하면 매번 입력하지 않아도 됩니다.)
        • Username : Github 계정(이메일 주소)
        • Password : Github 비밀번호


      앞에서 적용한 수정내요이 Github에 적용되는 것을 확인할 수 있습니다.


      이상 간단한 Github 사용팁이었습니다.



      참조


      저작자 표시 비영리 동일 조건 변경 허락
      신고

      험프리.김현수 Delphi/C++Builder github, Subversion, svn, 델파이

      1. 오, 저에게 상당히 유용한 정보입니다. 이 방법대로 한 번 테스트해 보도록 하겠습니다.
        그리고, 늘 좋은 정보 공유 감사드립니다. ^^

      2. 네^^ 간단하지만 유용한 내용입니다. 도움이 되셨다니 저도 기분이 좋습니다.

      OXml(XML 라이브러리) 소개

      2014.07.22 17:05

      파스칼에서 사용할 수 있는 XML 라이브러리를 하나 소개합니다.

      OXml -XML 라이브러리

      OXml은 델파이와 C++빌더, 라자루스, FPC에서 사용할 수 있는 XML 구문분석 외부 라이브러리입니다.
      제품 소개에는 다음과 같은 타이틀이 눈에 띄네요. 자신감이 넘칩니다.
      OXml - The next generation XML library for Pascal
      OXml - 파스칼의 차세대 XML 라이브러리

      아주 간단한 기능만 소개하면
      • Win32, Win64, OSX, iOS, Android를 모두 지원
      • Delphi 4 ~ XE6 버전 지원(C++빌더도 동일한 버전이나 테스트는 하지 않음)
      • 프레임워크(VCL, FMX, LCL)에 종속적이지 않은 방식으로 구현
      • Delphi 2007 이전의 버전에서도 유니코드를 지원
      제품 웹사이트에 보면 자세한 소개와 샘플코드, 다운로드 안내등 다양한 정보가 있습니다.
      • http://www.kluug.net/oxml.php
      그리고 제일 중요한 라이선스는 CPAL(Common Public Attribution License) 라이선스입니다.(C팔이라고 읽으면 안됩니다. 알파벳으로 읽으세요^^) 즉, 사용 시 저작자 정보를 표시해야 하는 라이선스 입니다.

      마지막으로 
      제작사에서 제공한 성능표는 대단하네요.
      (저는 개인적으로 테스트하지 않았습니다.)

      먼저 일기에 대한 성능입니다.


      다음 쓰기에 대한 성능입니다.


      XML 데이터 처리 시 검토해 보시면 좋겠습니다.


      저작자 표시 비영리 동일 조건 변경 허락
      신고

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

      델파이를 이용해 구글크롬캐스트와 연결

      2014.07.22 11:43

      델파이를 이용해 구글 크롬캐스트에 연결해 유투브의 비디오를 TV에서 비디오를 재생하는 예제와 방법을 소개하는 아주 재미있는 글이 있어 포스팅합니다.


      최근 구글 크롬캐스트가 스마트폰 미러링 기능을 지원하며 다시한번 화재가 되고 있습니다.


      델파이에서는 구글에서 공개한 Google Cast API를 통해 일부 인디(Indy) 컴포넌트와  RESTClient 컴포넌트를 통해 연결합니다.


      델파이와 크롬캐스트를 연결하는 구성은 간단합니다.

      1. 구글 크롬캐스트 발견(IdUDPClient와 IdHttp 컴포넌트가 사용됩니다.)
      2. 유투브앱을 실행하고 비디오 시작(RESTClient와 IdHttp 콤퍼넌트가 사용됩니다.)




      구글 크롬캐스트와 델파이를 연결하는 자세한 내용과 소스코드는 해당 블로그(http://fixedbycode.blogspot.dk/)에 방문하셔서 확인하시기 바랍니다.


      구글 크롬캐스트란?

      크롬캐스트(Chromecast)는 구글에서 만든 멀티미디어 스트리밍 어댑터이다. 이 장치는 2 인치(5.1 cm) 동글이며 HDTV의 HDMI 포트에 꽂아 오디오나 비디오를 와이파이를 통해 수신해 TV에서 스트리밍 재생한다. 크롬캐스트는 HDMI 1.4+ 포트와 USB 포트, 전원 어뎁터로부터 전원을 공급받으며 구글 크롬 OS의 심플 버전을 탑재하고 있다.

      위키백과 참조




      참고글


      저작자 표시 비영리 동일 조건 변경 허락
      신고

      험프리.김현수 Delphi/C++Builder 구글 크롬캐스트, 구글캐스트, 델파이

      TFileStream 기반 파일진행 상황을 보여주기

      2014.07.14 09:27

      오랫만에 박지훈.임프님의 기술 글을 올리셨네요^^ 페이스북으로 확인하고 포스팅합니다.


      이번글에서는 델파이, C++빌더 개발자들에게 아주 친숙한 TStream 중 TFileStream에 진행률 이벤트를 추가하고 사용하는 방법을 안내합니다.



      직접 방문하셔서 확인해 보세요.

      원글


      저작자 표시 비영리 동일 조건 변경 허락
      신고

      험프리.김현수 Delphi/C++Builder C++빌더, Delphi, TFileStream

      인터베이스 서버(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로 구동되기도 합니다.)


      저작자 표시 비영리 동일 조건 변경 허락
      신고

      험프리.김현수 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로 받으시려면 다음 링크를 통해 다운로드하세요.


      저작자 표시 비영리 동일 조건 변경 허락
      신고

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