(문서)프로그래밍 언어 기초 - 델파이와 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 델파이, 오픈소스

[XE7] 안드로이드 4.4 스타일의 대화상자 사용하기

2015.01.07 10:04

델파이를 이용해 안드로이드 앱개발 시 기본 대화상자(Dialog)는 안드로이드 2.3 버전으로 표시됩니다.

이 이슈는 엠바카데로 커뮤니티 3.0 사이트에 등록되었으며 David I가 직접 답변을 달고 해결방안을 소개했습니다.


결과 적으로 FMX.Helper.Android.pas 유닛의 GetNativeTheme 함수를 수정해 해결할 수 있습니다.

(변경된 소스 적용은 프로젝트에 수정한 파일을 추가해서 간단히 해결할 수 있네요.)



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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 XE7, 델파이, 안드로이드

[앱 소개] 파생 플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) - Delphi XE7/안드로이드

2015.01.06 16:23


(2015년 첫번째 글입니다. 제가 부끄러움이 많아 블로그에서 정보만 전달했는데요. 은근슬쩍 신년인사드립니다. 블로그에 오시는 분들과 델파이, C++빌더, 앱메소드 개발자 분들 모두모두 새해 복 많이 받으세요.^^)


이번 글에서는 피터주혁(데브기어 테크게시판 별칭)님이 개발하신 파생플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) 앱을 소개합니다.


이 앱은 델파이 XE7으로 개발되어 안드로이드 마켓에 공개되었습니다. 아래 링크 방문하셔서 다들 다운로드 한번 받아주세요.(이런말은 본인이하기 어려우니 제가 대신 해드립니다.^^)


HTS 시스템의 경우 이미 PC 기반에서 델파이의 강세를 나타내는 영역인데요. 모바일에서도 다시 강세를 나타내는 신호탄이 되길 바라겠습니다.(기회가 되신다면 iOS 앱 스토어도 올려주시면 더 좋겠습니다^^)


앱에 대한 소개를 좀 더 해드리면(사실, 제가 주식을 할줄 모릅니다...)

국내 선물 및 해외선물(호주달러, 캐나다달러, 유로FX, 파운드선물, 크루드오일, S&P 500)을 거래할수 있는 무료 모의 투자 서비스입니다. 모의투자에서 연습 매매후 실전 매매에서 성공투자 하세요.

이라고 합니다.^^


그리고, 사용자 의견을 보니 아직 많지는 않지만 전반적으로 편리하고, 좋다는 의견이 다수입니다.(평점 4.8)


마지막으로, 앱을 설치하며 보인 사소한 의견 몇가지 드립니다^^

  • 사용권한은 꼭 필요한 항목만 선택하기 바랍니다. - 통화, 카메라등의 권한을 선택하면 해당 기능이 없는 디바이스는 해당 앱을 다운로드 받을 수 없습니다. 꼭 필요한 권한만 선택하시기 바랍니다.
  • 앱의 아이콘은 PNG-투명이미지으로 사용하면 원형아이콘의 흰바탕 없이 더 깔끔하게 표현할 수 있을 것 같습니다.
PS - 
개발한 앱을 마켓에 등록하시거나, 홍보가 필요하시면 제 블로그 또는 데브기어 테크게시판으로 알려주시면 소개해 드리겠습니다. 많이 올려주세요.

관련 글



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

험프리.김현수 험프리.김현수 기타정보 XE7, 델파이, 안드로이드

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

    비밀댓글입니다

델파이(그리고 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 사용팁이었습니다.



참조


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

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

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

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

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

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의 심플 버전을 탑재하고 있다.

위키백과 참조




참고글


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

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

앱 완전 구동 후 작업 수행 하기(라이프 사이클 이벤트 / 타이머 이용)

2014.07.11 16:04

앱에서 초기화 작업을 FormCreate(또는 FormShow)에서 하게되면 구동시간이 길어지고, 오류가 발생하는 경우 앱이 정상구동되지 않을 수(검은화면만 표시) 있습니다.


그렇기 때문에 앱이 완전 구동된 이후에 초기화 작업을 진행하도록 하기 바랍니다.

앱 완전 구동 후 동작하기 위해서는 아래와 같은 2가지 방법이 있습니다.

  1. 모바일 앱 라이프 사이클 이용하기
  2. 타이머를 이용해 구동 이후 이벤트 받아 처리하기

모바일 앱 라이프 사이클 이용하기

모바일(안드로이드, iOS)는 라이프 사이클 이벤트를 제공합니다.(http://blog.hjf.pe.kr/114 참고)

아래 코드를 참고하기 바랍니다.

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FInit: Boolean;
    procedure InitData;

    function HandleAppEvent(AAppEvent: TApplicationEvent;
      AContext: TObject): Boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
var
  EventService: IFMXApplicationEventService;
begin
  FInit := False;
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(EventService)) then
    EventService.SetApplicationEventHandler(HandleAppEvent)
  else
    InitData;
end;

function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent;
  AContext: TObject): Boolean;
begin
  case AAppEvent of
    TApplicationEvent.FinishedLaunching, 
    TApplicationEvent.BecameActive:
        InitData;
  end;
  Result := True;
end;

procedure TForm1.InitData;
begin
  if FInit then
    Exit;

  // 데이터 및 컨트롤 초기화

  FInit := True;
end;

end.


참고로 FinishedLaunching 이벤트가 iOS에서 발생하지 않습니다. 그래서 iOS의 경우 BecameActive 이벤트를 이용해 초기화 진행했습니다.

BecameActive 이벤트는 앱 활성화 될 때 마다 발생하기 때문에 중복방지 코드(if FIni then Exit;)를 추가했습니다.

타이머를 이용해 구동 이후 이벤트 받기

타이머(TTimer) 컴포넌트를 폼에 추가 후 실행하면, 앱이 구동된 이후 타이머 이벤트가 발생합니다.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  InitData;
end;

관련글



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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 FMX, Log.d, 델파이, 라이프사이클

델파이 오류 메시지 한글로 보기

2014.04.03 10:40


개발하다보면 참으로 자주 만나는 것이 에러 메시지이지만, 가끔 발생하는 에러는 도무지 어쩌라는 것인지 이해 되지 않을 때가 종종있습니다. 

아래 링크를 확인하시면, 델파이에서 발생하는 오류 메시지를 한글로 확인하실 수 있습니다.

에러에서 발생하는 메시지 (E1038 ~~~~~)에서 앞의 코드로 검색하시면 해당하는 메시지를 쉽게 찾을 수 있습니다.



아래는 오류메시지를 상세하게 보는 화면입니다.(일본어를 자동 번역한 것이어서 약간의 의역은 있지만, 기술적인 부분은 충분히 이해하실 수 있을 것 같습니다.)



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

험프리.김현수 험프리.김현수 Delphi/C++Builder 델파이, 한글 오류 메시지

RAD Studio(델파이, C++빌더) 단축키

2014.03.24 10:02

RAD Studio(Delphi, C++빌더) 단축키 입니다.

(엠바카데로 문서 자동 번역 후 일부 보정했습니다.)


컴파일 시 여러건의 오류를 이동하는 단축키를 묻는 분이 있어 찾아보니 Alt + F7, Alt + F8이 있었네요.(저도 모르고 여지껏 마우스로 클릭했네요.^^)

다양한 단축키 알아두시면 개발도 빠르게 하고, 디버깅도 빠르게 할 수 있겠네요.


바로 가기작업

Alt + [

해당 구분 기호를 찾습니다 (앞으로).

Alt + ]

해당 구분 기호를 찾습니다 (역방향).

Alt + ←

Alt + ↑ 또는 Ctrl + 클릭 (선언 부로 이동) 작업 이전 위치로 돌아갑니다.

Alt + F7

Messages View에 표시되기 전에 오류 또는 메시지의 위치로 이동합니다.

Alt + F8

Messages View에 표시된 다음 오류 또는 메시지의 위치로 이동합니다.

Alt + PgDn

다음 탭으로 이동합니다.

Alt + PgUp

이전 탭으로 이동합니다.

Alt + →

Alt + ← 작업 이전 위치로 이동합니다.

Alt + Shift + ↓

커서를 한 줄 아래로 이동하여 원래의 커서 위치의 오른쪽에서 단일 열에을 선택합니다.

Alt + Shift + End

커서 위치부터 현재 줄의 끝까지 선택합니다.

Alt + Shift + Home

커서 위치부터 현재 줄의 처음까지 선택합니다.

Alt + Shift + ←

왼쪽의 열을 선택합니다.

Alt + Shift + PgDn

커서를 한 화면 아래로 이동하고 원래의 커서 위치를 유지합니다.

Alt + Shift + PgUp

커서를 한 화면 위로 이동하고 원래의 커서 위치를 유지합니다.

Alt + Shift + →

오른쪽의 열을 선택합니다.

Alt + Shift + ↑

커서를 한 줄 위로 이동하여 원래의 커서 위치의 오른쪽에서 단일 열에을 선택합니다.

Alt + ↑

선언 부로 이동합니다.

Click + Alt + Mousemove

열 단위 블록을 선택합니다.

Ctrl + /

선택한 코드 블록의 각 행에 // 를 추가하여 코드를 주석으로 처리하거나, 제거합니다.

Ctrl + Alt + F12

열려있는 파일의 드롭 다운 목록을 표시합니다.

Ctrl + Alt + Shift + End

커서 위치에서 화면의 끝까지 열을 선택합니다.

Ctrl + Alt + Shift + Home

커서 위치에서 화면의 시작까지 열을 선택합니다.

Ctrl + Alt + Shift + ←

왼쪽의 열을 선택합니다.

Ctrl + Alt + Shift + PgDn

커서 위치에서 현재 파일의 끝까지 열을 선택합니다.

Ctrl + Alt + Shift + PgUp

커서 위치에서 현재 파일의 시작 부분까지 열을 선택합니다.

Ctrl + Alt + Shift + →

오른쪽의 열을 선택합니다.

Ctrl + BackSpace

커서의 왼쪽으로 한 단어를 삭제합니다 (앞의 공백까지의 문자가 삭제됩니다.)

Ctrl + Click

선언 부로 이동합니다.

Ctrl + Delete

현재 선택된 블록을 삭제합니다.

Ctrl + ↓

아래에 한 줄 스크롤합니다.

Ctrl + End

파일의 끝으로 이동합니다.

Ctrl + Enter

커서 위치의 파일을 엽니 다.

Ctrl + Home

파일의 시작 부분으로 이동합니다.

Ctrl + I

커서 위치에 탭 문자를 삽입합니다.

Ctrl + J

템플릿 팝업 메뉴를 엽니 다.

Ctrl + K + n

커서 위치에 책갈피 설정 ( n 은 0 ~ 9의 숫자).

Ctrl + K + E

현재 단어를 소문자로 변환합니다.

Ctrl + K + F

현재 단어를 대문자로 변환합니다.

Ctrl + K + T

커서 위치의 한 단어를 선택합니다.

Ctrl + ←

한 단어 왼쪽으로 이동합니다.

Ctrl + n

책갈피로 이동합니다 ( n 은 0-9의 책갈피 번호).

Ctrl + N

커서 위치에 줄 바꿈을 삽입합니다.

Ctrl + O + C

열 단위 블록 모드를 선택합니다.

Ctrl + O + K

열 단위 블록 모드를 해제합니다.

Ctrl + O + L

행 방향 블록 모드를 선택합니다.

Ctrl + O + O

컴파일러 옵션을 삽입합니다.

Ctrl + P

다음 문자를 ASCII 시퀀스로 해석합니다.

Ctrl + PgDn

화면의 맨 아래로 이동합니다.

Ctrl + PgUp

화면 상단으로 이동합니다.

Ctrl + Q + #

커서 위치에 책갈피를 설정합니다.

Ctrl + →

한 단어 오른쪽으로 이동합니다.

Ctrl + Shift + C

커서 위치의 클래스 선언에 대응하는 클래스 보완을 시작합니다.

Ctrl + Shift + #

커서 위치에 책갈피를 설정합니다.

Ctrl + Shift + B

버퍼 목록을 표시합니다.

Ctrl + Shift + ↓

선언에서 구현 또는 구현에서 선언으로 이동합니다.

Ctrl + Shift + Enter

사용 항목을 검색합니다.

Ctrl + Shift + J

동기화 편집 모드를 선택합니다.

Ctrl + Shift K-A

모든 코드 블록을 확장합니다.

Ctrl + Shift K + C

모든 클래스를 축소합니다.

Ctrl + Shift K + E

코드 블록을 축소합니다.

Ctrl + Shift K-G

초기화 / 종료 또는 인터페이스 / 구현

Ctrl + Shift K + M

모든 메서드를 축소합니다.

Ctrl + Shift K + N

네임 스페이스 / 단위를 축소합니다.

Ctrl + Shift K + O

코드 축소를 활성화 또는 비활성화 전환합니다.

Ctrl + Shift K + P

중첩 된 절차를 축소합니다.

Ctrl + Shift K + R

모든 영역을 축소합니다.

Ctrl + Shift K-T

현재 블록의 축소 및 확장을 전환합니다.

Ctrl + Shift K-U

코드 블록을 확장합니다.

Ctrl + Shift + End

커서 위치에서 현재 파일의 끝까지 선택합니다.

Ctrl + Shift + G

새로운 글로벌 고유 식별자 (GUID)를 삽입합니다.

Ctrl + Shift + Home

커서 위치에서 현재 파일의 처음까지 선택합니다.

Ctrl + Shift + I

선택된 블록을 들여 씁니다.

Ctrl + Shift + ←

커서의 왼쪽으로 한 단어를 선택합니다.

Ctrl + Shift + P

기록 된 키 스트로크 매크로를 재생합니다.

Ctrl + Shift + PgDn

커서 위치에서 화면의 하단까지를 선택합니다.

Ctrl + Shift + PgUp

커서 위치에서 화면 상단에서을 선택합니다.

Ctrl + Shift + R

키 스트로크 매크로 기록 시작 / 정지를 전환합니다.

Ctrl + Shift + →

커서의 오른쪽으로 한 단어를 선택합니다.

Ctrl + Shift + Space

코드 파라미터 팝업 창을 엽니 다.

Ctrl + Shift + T

[To-Do 항목 추가 대화 상자를 엽니 다.

Ctrl + Shift + Tab

이전 코드 페이지 (또는 파일)로 이동합니다.

Ctrl + Shift + Tab

이전 페이지로 이동합니다.

Ctrl + Shift + U

선택된 블록 들여 쓰기를 해제합니다.

Ctrl + Shift + ↑

선언에서 구현 또는 구현에서 선언으로 이동합니다.

Ctrl + Shift + Y

커서 위치부터 줄 끝까지 삭제합니다.

Ctrl + Space

코드 완성 팝업 창을 엽니 다.

Ctrl + T

오른쪽으로 한 단어를 삭제합니다 (다음 스페이스까지의 문자가 삭제됩니다.)

Ctrl + Tab

다음 코드 페이지 (또는 파일)로 이동합니다.

Ctrl + ↑

한 행 위로 스크롤합니다.

Ctrl + Y

현재 행을 삭제합니다.

F1

선택된 정규화 된 네임 스페이스의 도움말을 표시합니다.

Shift + Alt + arrow

열 단위 블록을 선택합니다.

Shift + BackSpace

커서의 왼쪽 문자를 삭제합니다.

Shift + ↓

커서를 한 화면 아래로 이동하여 원래의 커서 위치의 오른쪽에서 현재 위치까지 선택합니다.

Shift + End

커서 위치부터 현재 줄의 끝까지 선택합니다.

Shift + Enter

커서 위치에 새 줄을 삽입합니다.

Shift + Home

커서 위치부터 현재 줄의 처음까지 선택합니다.

Shift + ←

커서의 왼쪽 문자를 선택합니다.

Shift + PgDn

커서를 한 화면 아래로 이동하여 원래의 커서 위치의 오른쪽에서 현재 위치까지 선택합니다.

Shift + PgUp

커서를 한 화면 위로 이동하여 원래의 커서 위치의 왼쪽에서 현재 위치까지 선택합니다.

Shift + →

커서의 오른쪽 문자를 선택합니다.

Shift + Space

공백을 삽입합니다.

Shift + Tab

커서를 왼쪽으로 한 탭 위치로 이동합니다.

Shift + ↑

커서를 한 줄 위로 이동하여 원래의 커서 위치의 왼쪽에서 현재 위치까지 선택합니다.

참고


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

험프리.김현수 험프리.김현수 Delphi/C++Builder C++Builder, Delphi, 단축키, 델파이, 씨빌더

  1. 오 이거 완전 감사^^

  2. Blog Icon
    싸커홍

    진심으로 감사합니다.

  3. 감사합니다
    출처남기고 퍼가겠습니다.

[후기] 부산가톨릭대학교 특강(델파이의 현재와 모바일 RAD)

2014.03.14 10:36

어느덧 봄이 오니 꽃이 피고 새싹도 나오는 것 처럼, 델파이의 새싹을 피우기 위해 3월 12일 부산가톨릭대학교 학생들을 만나러 부산으로 갔습니다.(부산가톨릭대학교에서 델파이 특강을 진행했습니다. )

올해 2번 부산 방문할때 마다 비가오네요. 이사할때 비가오면 잘된는 말처럼 부산에서의 델파이 부흥도 아주 잘될것 같아 기대가 큽니다.


저희 데브기어는 델파이를 더 알리고 델파이 인력을 늘리는데 항상 노력하고 있습니다. 앞으로 더 노력하겠습니다.


아래는 특강에서 발표한 발표자료입니다. 학생들이 재미있게 느낄만한 요소로 구성했습니다.(다음에는 더 박진감 넘치게 해야할 것 같아요.)


학새회과 소극장에 발표를 위해 방문하니 송구스럽게도 현수막까지 걸어주셨습니다. 감사합니다.(근데... "강현수"... 성희롱을 당했습니다.ㅎㅎ 담당 교수님이 미안해 하시는데 저는 재미있었습니다.)


학생들이 들어오고 특강이 진행되었습니다. 역시 맨 앞줄은 부담스러운가 봐요 그래도 100석을 거의 매워주어서 학교와 학생들에게 감사했습니다.^^


특강을 마치고 도움을 주신 부산 델파이 교육장 SYCode(http://www.sycode.co.kr) 대표님과 부산의 명물 돼지국밥을 아주 맛있게 먹었습니다. 부산역 오른쪽 골목 목촌돼지국밥인데 서비스로 순대를 주셔서 부산의 후한 인심을 넘치도록 느낄수 있었습니다.


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

험프리.김현수 험프리.김현수 교육, 세미나 Delphi, 데브기어, 델파이, 부산가톨릭대학교, 특강

RAD Studio, Delphi 그리고 C++빌더 로드맵

2014.03.05 10:06


RAD Studio, Delphi 그리고 C++빌더 로드맵이 발표되었습니다.


지난해 멀티플랫폼(파이어몽키)에 너무 치중한다는 일부우려가 있듯이 올해(2014년)에는 VCL과 RTL에도 발전이 있을 것 같아 기대가 되네요^^

2014년에 2번의 릴리즈를 통해 제공되는 기술과 기능들

  • 안드로이드를위한 완벽한 C + + 툴 체인
  • QPS (품질, 성능, 안정성)
  • 안드로이드와 아이폰 OS에 대한 광고 및 지불 구성 요소
  • 데이터 스냅 미들웨어 향상 (성능, REST 매핑, 아키텍쳐 개선)
  • 새로운 멀티 디바이스 비주얼 디자이너 및 새롭고, 유연한 사용자 인터페이스 구성 요소를 더 강화된 단일 소스 멀티 플랫폼 지원
  • Mobile Backend as a Service(MBaaS) 컴포넌트, Parse, Kinvey(모바일 클라우드 서비스 업체)와 같은 업체와 인터페이스
  • 모바일 및 데스크톱 응용 프로그램의 상호 운용성
  • 안드로이드 KitKat 지원
  • VCL 애플리케이션을 위한 사용하기 쉬운 윈도우 작업 표시 줄 컴포넌트
  • VCL 스타일의 개선과 인텔 태블릿환경의 윈도우에서의 VCL 어플리케이션 지원, 스타일과 센서 컴포넌트
  • 특정 폼 팩터, 특히 구글 글래스를 사용 할 수있는 안드로이드 장치에 대한 직접 지원
  • 아파치 HTTP 서버 모듈은 현재 ISAPI의 IIS 지원과 함께, 웹 브로커 및 데이터 스냅에 대한 지원
  • 다양한 Run time Library(RTL) 개선, XML, JSON 처리와 그외의 것들을 모든 플랫폼 구현을 개선
  • FireDAC 새로운 데이터베이스 버전에 대한 지원을 포함하여 기존 드라이버에 새 드라이버 및 개선,
  • 한 해 동안 구글과 애플에 의해 발표 될 것으로 예상 안드로이드와 아이폰 OS의 미래 버전을 지원합니다.
  • 블루투스 지원 (모바일 장치)
  • C + + 11 언어 사양을 완벽하게 지원 Win32에서의 C + + 컴파일러의 새로운 버전

원문 : http://edn.embarcadero.com/article/43677

번역 ; http://translate.google.com/translate?sl=en&tl=ko&js=n&prev=_t&hl=ko&ie=UTF-8&u=http%3A%2F%2Fedn.embarcadero.com%2Farticle%2F43677



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

험프리.김현수 험프리.김현수 RAD Studio 정보 C++빌더, Delphi, Firemonkey, Rad Studio, 델파이, 로드맵, 빌더, 엠바카데로, 파이어몽키

모바일개발 심화

2014.02.06 01:07



안녕하세요. 험프리 김현수입니다.


이글에는 안드로이드와 iOS 개발 시 참고 할만한 글들을 모으려 합니다.

따라가기 형태가 아니며, 내용을 훑어 보시고 필요한 정보는 방문해서 지식을 얻으셨으면 좋겠습니다.


(계속 작성 중입니다. 좋은 정보 있으면 댓글로 알려주세요.)


공통기능

    Android 특화기능

    ▶ Android API 접근

    iOS 특화기능

    ▶ 외부 서비스 연동

    참고정보

    ▶ 공개 소스

    추가자료


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

    험프리.김현수 험프리.김현수 Firemonkey android, Firemonkey, ios, Rad Studio, 네이티브개발, 델파이, 멀티플랫폼, 안드로이드, 파이어몽키

    1. 필요한 정보 남겨주시면 찾아서 추가하겠습니다. 조회 수는 많은데 의견이 너무 없네요^^ 많이 남겨 주세요.

    2. Blog Icon
      반벽이

      델파이로 안드로이드 어플개발에 필요한 정보가 많이 있어서 감사한 마음으로 보고 있습니다
      선리플 후 의견 더 달아볼께요~^^ 감사합니다.

    3. 도움이 되셨다니 너무 좋습니다. 앞으로도 꾸준한 정보 기대하세요^^

    Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기

    2013.12.17 18:21

    해당 글의 예제는 Delphi XE5로 테스트 했으며, 다른버전의 화면 및 메뉴 명칭은 약간 다를 수 있습니다.


       가끔 주위에서 배포 시 프로그램 용량이 너무 커서 dll 등으로 폼을 분리하는 방법을 문의합니다. 저는 되도록 UPX로 실행파일 압축을 권하지만, 근본적으로 실행파일 용량을 줄이고자 하시는 분들께 도움이되는 내용입니다.


    Runtime Packages란?

    • Runtime packages는 실행파일에 라이브러리를 포함하여 컴파일할지 결정하는 프로젝트 옵션(Project > Options > Packages > Runtime Packages)입니다.
    • Runtime packages 옵션은 기본(신규 프로젝트 생성 시)으로 해제되어 있어, 컴파일된 실행파일에는 정적라이브러리(*.lib)가 모두 포함됩니다.
    • 해당 옵션을 해제하게 되면 옵션명대로 Runtime에서 Package들을 사용해야 합니다. 즉, 라이브러리(bpl: Borland Package Library)를 함께 배포해야 합니다. 대신 실행파일의 용량은 확실하게 줄어들게 됩니다.


    | Runtime Package 설정 시 용량차이



    • IncludePackage.exe - 패키지가 포함된 실행파일(Runtime Packages 해제: 기본 설정)
    • RunTimePackages.exe - 패키지가 제외된 실행일(Runtime Packages 설정)

      위의 2개의 실행파일은 Delphi XE5로 신규 프로젝트(폼만 있는 빈 프로젝트)를 컴파일한 실행파일입니다. 빈 프로젝트를 컴파일 한 2개의 실행파일도 서로 용량 차이가 꽤 납니다. 


      Runtime packages으로 설정한 실행파일은 실행 시 라이브러리가 필요합니다. 위와 같이 Bpl파일을 함께 배포해야 합니다. 배포경로는 실행파일과 같은 위치 또는 윈도우 시스템 경로인 C:\Windows\System32, C:\Windows\SysWOW64에 Bpl파일을 복사하면 됩니다. 일반적인 Bpl파일은 델파이 실행파일 경로(C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin)에 위치합니다.


      만약, Bpl파일을 배포하지 않는다면, 아래와 같은 오류가 발생합니다.(단, 델파이가 설치된 PC환경에서는 시스템 변수에 해당 경로가 등록되어 오류가 발생하지 않습니다.)



    | 개발된 폼을 bpl로 배포하기


      기본 bpl을 제외해서 용량을 줄이는 방법 외에도 개발에 사용된 폼을 패키지 프로젝트로 작성하여 Bpl로 배포함으로 배포용량을 분산할 수 있습니다. 


      폼이 2개인 어플리케이션에서 하나의 서브 폼을 패키지로 작성 후 배포하는 예로 설명을 하겠습니다.

      전체적인 프로젝트 구성은 아래와 같습니다.


    메인 프로젝트 생성

    1. File > New > VCL Form Application으로 프로젝트 생성
    2. Project Manager에서 Project를 선택하고 Add New > VCL Form으로 폼을 하나 추가
    3. File > Save로 프로젝트 및 Unit을 저장
      1. RunTImePackages.dpr로 프로젝트 저장
      2. 메인폼을 MainForm.pas로 저장
      3. 추가한 폼의 Name을 TfrmSecond로 지정 후 SecondForm.pas로 저장
    4. MainForm에 버튼을 올리고 ShowModal로 SecondForm을 호출하는 코드 추가
    5. uses
        SecondForm;
      
      {$R *.dfm}
      
      procedure TForm4.Button1Click(Sender: TObject);
      begin
        with TfrmSecond.Create(nil) do
        begin
          ShowModal;
          Free;
        end;
      end;
      

    6. 실행 및 테스트


    Second Form Package 생성

    1. 위의 프로젝트의 Project Manager에서 Project Group1 > Add New Project > Package 선택 및 확인
    2. Project Manager > Package1(추가한 Package) > Contains 우측 마우스 클릭 > Add > 위의 프로젝트의 SecondForm.pas 선택
    3. 프로젝트 저장
      1. SecondFormPackage.dpk로 프로젝트 저장
    4. 컴파일(Ctrl + F9) - 다른 Package가 필요하다는 메시지 창이 표시되면 확인 후 OK 클릭

    5. 위와 같이 컴파일하면 Bpl기본 경로(C:\Users\Public\Documents\RAD Studio\12.0\Bpl)에 SecondFormPackage.bpl이 생성됩니다.


    Main 프로젝트를 Runtime Packages로 설정

    1. Runtime Packages 옵션 호출(Project > Options > Packages > Runtime Packages)
    2. 아래 그림과 같이 설정
      • Runtime Packages > Inherit > True로 변경
      • 입력된 값을 모두 지우고, 위에서 만든 패키지 이름 입력



      위와 같은 과정을 거치면 실행파일과 각각의 폼을 Bpl로 분산이되어 배포 시 해당하는 파일만 배포하여 배포 용량을 줄일 수 있습니다.


    | 주의할 사항


    • 패키지로 배포할 경우 패키지 파일에서 사용하는 패키지도 함께 배포해야 합니다.
    • 위의 이유로 사용하는 컴포넌트 및 패키지의 구조를 정확히 인지하는 경우만 위의 방식을 사용해야 합니다.
    • 배포 전 반드시 델파이가 설치되지 않은 위치에서 배포 테스트를 진행해야 합니다.


    사실 저도 이번 기회에 패키지를 처음 만들어 봤습니다. 테스트하는 과정에서 나온 내용을 공유하는 것이니 혹시 잘못된 내용이나 개선사항이 보이시면 해당 댓글이나 hjfactory@gmail.com으로 보내주시면 수정반영하겠습니다.


    감사합니다.


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

    험프리.김현수 험프리.김현수 Delphi/C++Builder Runtime Package, 델파이, 배포용량 줄이기

    1. Blog Icon

      비밀댓글입니다

    [작업일지] 그루핑 완료(alpha 0.4)

    2013.01.24 02:17

    그루핑에 대한 작업이 일단락 됐다.

    겹치면 그룹화 되는 좀 일반적(파워포인트 등에서는 그룹 메뉴가 있다.)이지 않은 방식이지만 편한 것 같아서 시도해 봤다.

    초반에 방향을 잘못잡아 반정도 작업한 것을 완전히 갈아 엎었지만

    오히려 갈아 엎으며 코드도 짧고 깨끗해 지고 

    내가 모든 것을 구현하지 않고 프레임워크(파이어몽키)의 메소드들을 이용했다.

    (DoAddObject, DoRemoveObject)


    그리고 Unittest의 도움을 대단히 많이 봤다.(해보니 좋다 TDD)

    아직은 어설프지만 리펙토링 및 대규모 코드 갈아 엎기 할때 놓치지 않아서 마음이 편하다.


    어쨌든 그루핑을 끝내서 0.4 버전이 완료가 됐고

    마음같아서는 다음버전 기능인 문자입력을 들어가고 싶지만 더 큰것을 준비해야 하기에 잠시 멈춰야 겠다.

    다음달 20일 발표 준비를 해야겠다.


    제목은 "나무를 심는 프로그래머".





    글만쓰면 아쉬우니 팁을 가끔 하나씩 넣어야 겠다.


    팁이라고 할것 까진 없고 인터페이스를 사용하는 이유중 하나인 implement이다.


    구현하다보면 전혀 다른 객체(클래스)인데 동일한 구현이 필요한 경우 사용된다.


    예를들면 

    드로윙 툴(토트캔버스)에서 

    아이템을 캔버스(컨텐츠)에 올릴 수도 있고 아이템위에 아이템을 올릴 수도 있다.


    그리고 캔버스에서 아이템으로 부모아이템 간 옮길 수 도 있다.

    즉 부모가 어떤 놈인지 구분하기 대단히 어렵다.


    위 상황에서 부모(Object.Parent)의 클래스 타입에 따라 분개하는 방법도 있지만

    인터페이스를 사용하면 짧고 편리하게 구현이 가능하다.


    아래와 같은 구조가 있다고 치자.

    아이템과 컨텐츠가 IThItemContainer라는 인터페이스를 상속 받는다.


      IThItemContainer = interface
      ['{76A11805-EA40-40B6-84A1-71B4DF277DCD}']
        procedure ContainChildren(AContainer: TThItem);
      end;
    
      TThItem = class(TControl, IThItem, IThItemContainer)
      public
        procedure ContainChildren(AContainer: TThItem);
      end;
    
      TThContents = class(TControl, IThItemContainer)
      private
        procedure ContainChildren(AContainer: TThItem);
      end;
    

    아래와 같이 부모를 찾았는데 FindParent

    부모의 타입(Parent는 TFmxObject이다) 과는 상관없이 ContainChildren 메소드를 호출한다.(15번째 줄)

    팁은 Supports라는 함수이다. COM을 사용할 때 많이 사용되는 좋은 함수이다.


    procedure TThCanvasEditor.MouseUp(Button: TMouseButton; Shift: TShiftState; X,  Y: Single);
    var
      ItemContainer: IThItemContainer;
    begin
      inherited;
    
      if IsDrawingItem and Assigned(FDrawItem) then
      begin
        FDrawItem.Selected := True;
    
        // Set Parent
        FDrawItem.Parent := FContents.FindParent(FDrawItem); // 부모 찾기
    
        // Contain Children
        if Supports(FDrawItem.Parent, IThItemContainer, ItemContainer) then
          ItemContainer.ContainChildren(FDrawItem);
    
        if Assigned(FOnItemAdded) then
          FOnItemAdded(FDrawItem);
      end;
    end;

    인터페이스 사용하면 어렵지만 유용한 놈입니다^^


    끝~

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

    험프리.김현수 험프리.김현수 Team Thoth implement, Interface, Supports, 델파이, 인터페이스

    [IDE] 델파이 작업경로 바로가기

    2012.02.10 10:10
    델파이로 개발 작업 중 현재 소스 경로로 이동해야 되는 일이 종종 있죠...

    그럴때마다 explorer를 실행해서 이동하려면 번거롭습니다. 

    그럴때 유용한  기능을 소개합니다.

    * 델파이 메뉴에 현재 작업 중인 작업경로를 여는 메뉴를 추가합니다.

    우선 예전 아는 선배에게 들은 재미있는 이야기 하나.

    선배는 핸드폰 관련된 개발 일을 했습니다. 

    동료와 이야기 중 "Window CE에서는 탐색기를 어떻게 열어요?" 라는 질문에

    근처에 있던 외국인 개발자 曰

    "뭔 새끼? 탐새끼?"

    -_-;

     
    그래서 그 이야기를 들은 저는 그 이후로 탐새끼라는 단어를 주로 사용합니다. 

    그러면 위의 탐새끼를 델파이에 등록해 보겠습니다. 

    1, Tools > Configure Tools 선택
     

     2, [Add] 버튼 클릭 후 아래와 같이 입력 후 [OK] 클릭
     

    3, Tools > 탐새끼 등록 확인

     위와 같이 등록하시면 "탐새끼"를 통해 현재 작업 중인 경로의 탐색기가 실행 됩니다.

    참 좋은 새끼(?)죠?

    끝~ 
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 Delphi/C++Builder 델파이, 작업경로이동, 탐새끼

    2GB 이상 파일크기 구하는 함수

    2011.12.19 10:51
    function FileSize(const AFileName: string): Int64;
    var
      srData: TSearchRec;
      FileData: DWORD;
      SizeHigh, SizeLow: Integer;
      RetVal: array[0..7] of Byte;
    begin  Result := -1;
    {$IFDEF MSWINDOWS}
      FileData := FindFirst(AFileName, faReadOnly, srData);
      if FileData <> 0 then
        Exit;
    
      SizeHigh := srData.FindData.nFileSizeHigh;
      SizeLow  := srData.FindData.nFileSizeLow;
      ZeroMemory(@RetVal[0], SizeOf(RetVal));
      Move(SizeLow, RetVal[0], 4);
      Move(SizeHigh, RetVal[4], 4);
      Move(RetVal[0], Result, 8);
    {$ENDIF}
    end;
    
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 Delphi/C++Builder Delphi, 델파이, 파일사이즈

    [Delphi] Wild Card 문자비교

    2010.03.23 12:33
    문자열에서 Wild Card('?': single character, '*': multi character)를 포함하여 비교한다.
    function MatchString(ASource, APattern: String): Boolean;
      function _MatchPattern(element, pattern: PChar): Boolean;
      begin
        if 0 = StrComp(pattern, '*') then
          Result := True
        else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
          Result := False
        else if element^ = Chr(0) then
          Result := True
        else
        begin
          case pattern^ of
          '*': if _MatchPattern(element, @pattern[1]) then
                 Result := True
               else
                 Result := _MatchPattern(@element[1],pattern);
          '?': Result := _MatchPattern(@element[1],@pattern[1]);
          else
            if element^ = pattern^ then
              Result := _MatchPattern(@element[1],@pattern[1])
            else
              Result := False;
          end;
        end;
      end;
    var
      pSource, pPattern: PChar;
    begin
      pSource   := StrAlloc(Length(ASource)+1);
      pPattern  := StrAlloc(Length(APattern)+1);
      try
        StrPCopy(pSource,   ASource);
        StrPCopy(pPattern,  APattern);
    
        Result := _MatchPattern(pSource, pPattern);
      finally
        StrDispose(pSource);
        StrDispose(pPattern);
      end;
    end;
    
    출처 : 인터넷 어딘가...:-)
    // sample
    var 
      source: string;
      target: string;
    begin
      source := 'abcdefg';
      target := 'ab*e?g';  // correct('cd' = '*', 'f' = '?')
    
      if MatchString(source, target) then  
        ShowMessage('Correct match')
      else 
        ShowMessage('Incorrect match')
      ;
    end;
    
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

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