VCL 기본 색상 정의표

VCL 이름

색상표

색상

지정명

색상

clNone

$1FFFFFFF

 

NONE

 

clAqua

$FFFF00

 

AQUA

 

clBlack

$0

 

BLACK

 

clBlue

$FF0000

 

BLUE

 

clCream

$F0FBFF

 

CREAM

 

clDkGray

$808,080

 

DKGRAY

 

clFuchsia

$FF00FF

 

FUCHSIA

 

clGray

$808,080

 

GRAY

 

clGreen

$8,000

 

GREEN

 

clLime

$00FF00

 

LIME

 

clLtGray

$C0C0C0

 

LTGRAY

 

clMaroon

$80

 

MAROON

 

clMedGray

$A4A0A0

 

MEDGRAY

 

clMoneyGreen

$C0DCC0

 

MONEYGREEN

 

clNavy

$800,000

 

NAVY

 

clOlive

$8,080

 

OLIVE

 

clPurple

$800,080

 

PURPLE

 

clRed

$0000FF

 

RED

 

clSilver

$C0C0C0

 

SILVER

 

clSkyBlue

$F0CAA6

 

SKYBLUE

 

clTeal

$808,000

 

TEAL

 

clWhite

$FFFFFF

 

WHITE

 

clYellow

$00FFFF

 

YELLOW

 

 

clWebAliceBlue

$FFF8F0

 

WEBALICEBLUE

 

clWebAntiqueWhite

$D7EBFA

 

WEBANTIQUEWHITE

 

clWebAqua

$FFFF00

 

WEBAQUA

 

clWebAquamarine

$D4FF7F

 

WEBAQUAMARINE

 

clWebAzure

$FFFFF0

 

WEBAZURE

 

clWebBeige

$DCF5F5

 

WEBBEIGE

 

clWebBisque

$C4E4FF

 

WEBBISQUE

 

clWebBlack

$0

 

WEBBLACK

 

clWebBlanchedAlmond

$CDEBFF

 

WEBBLANCHEDALMOND

 

clWebBlue

$FF0000

 

WEBBLUE

 

clWebBlueViolet

$E22B8A

 

WEBBLUEVIOLET

 

clWebBrown

$2A2AA5

 

WEBBROWN

 

clWebBurlywood

$87B8DE

 

WEBBURLYWOOD

 

clWebCadetBlue

$A09E5F

 

WEBCADETBLUE

 

clWebChartreuse

$00FF7F

 

WEBCHARTREUSE

 

clWebChocolate

$1E69D2

 

WEBCHOCOLATE

 

clWebCoral

$507FFF

 

WEBCORAL

 

clWebCornFlowerBlue

$ED9564

 

WEBCORNFLOWERBLUE

 

clWebCornSilk

$DCF8FF

 

WEBCORNSILK

 

clWebCrimson

$3C14DC

 

WEBCRIMSON

 

clWebCyan

$FFFF00

 

WEBCYAN

 

clWebDarkBlue

$8B0000

 

WEBDARKBLUE

 

clWebDarkCyan

$8B8B00

 

WEBDARKCYAN

 

clWebDarkGoldenRod

$0B86B8

 

WEBDARKGOLDENROD

 

clWebDarkGray

$A9A9A9

 

WEBDARKGRAY

 

clWebDarkgreen

$6,400

 

WEBDARKGREEN

 

clWebDarkKhaki

$6BB7BD

 

WEBDARKKHAKI

 

clWebDarkMagenta

$8B008B

 

WEBDARKMAGENTA

 

clWebDarkOliveGreen

$2F6B55

 

WEBDARKOLIVEGREEN

 

clWebDarkOrange

$008CFF

 

WEBDARKORANGE

 

clWebDarkOrchid

$CC3299

 

WEBDARKORCHID

 

clWebDarkRed

$00008B

 

WEBDARKRED

 

clWebDarkSalmon

$7A96E9

 

WEBDARKSALMON

 

clWebDarkSeaGreen

$8FBC8F

 

WEBDARKSEAGREEN

 

clWebDarkSlateBlue

$8B3D48

 

WEBDARKSLATEBLUE

 

clWebDarkSlategray

$4F4F2F

 

WEBDARKSLATEGRAY

 

clWebDarkTurquoise

$D1CE00

 

WEBDARKTURQUOISE

 

clWebDarkViolet

$D30094

 

WEBDARKVIOLET

 

clWebDeepPink

$9314FF

 

WEBDEEPPINK

 

clWebDeepskyBlue

$FFBF00

 

WEBDEEPSKYBLUE

 

clWebDimGray

$696,969

 

WEBDIMGRAY

 

clWebDodgerBlue

$FF901E

 

WEBDODGERBLUE

 

clWebFirebrick

$2222B2

 

WEBFIREBRICK

 

clWebFloralWhite

$F0FAFF

 

WEBFLORALWHITE

 

clWebForestGreen

$228B22

 

WEBFORESTGREEN

 

clWebFuchsia

$FF00FF

 

WEBFUCHSIA

 

clWebGainsboro

$DCDCDC

 

WEBGAINSBORO

 

clWebGhostWhite

$FFF8F8

 

WEBGHOSTWHITE

 

clWebGold

$00D7FF

 

WEBGOLD

 

clWebGoldenRod

$20A5DA

 

WEBGOLDENROD

 

clWebGray

$808,080

 

WEBGRAY

 

clWebGreen

$8,000

 

WEBGREEN

 

clWebGreenYellow

$2FFFAD

 

WEBGREENYELLOW

 

clWebHoneydew

$F0FFF0

 

WEBHONEYDEW

 

clWebHotPink

$B469FF

 

WEBHOTPINK

 

clWebIndianRed

$5C5CCD

 

WEBINDIANRED

 

clWebIndigo

$82004B

 

WEBINDIGO

 

clWebIvory

$F0FFFF

 

WEBIVORY

 

clWebKhaki

$8CE6F0

 

WEBKHAKI

 

clWebLavender

$FAE6E6

 

WEBLAVENDER

 

clWebLavenderBlush

$F5F0FF

 

WEBLAVENDERBLUSH

 

clWebLawnGreen

$00FC7C

 

WEBLAWNGREEN

 

clWebLemonChiffon

$CDFAFF

 

WEBLEMONCHIFFON

 

clWebLightBlue

$E6D8AD

 

WEBLIGHTBLUE

 

clWebLightCoral

$8080F0

 

WEBLIGHTCORAL

 

clWebLightCyan

$FFFFE0

 

WEBLIGHTCYAN

 

clWebLightGoldenrodYellow

$D2FAFA

 

WEBLIGHTGOLDENRODYELLOW

 

clWebLightGreen

$90EE90

 

WEBLIGHTGREEN

 

clWebLightgrey

$D3D3D3

 

WEBLIGHTGREY

 

clWebLightPink

$C1B6FF

 

WEBLIGHTPINK

 

clWebLightSalmon

$7AA0FF

 

WEBLIGHTSALMON

 

clWebLightSeaGreen

$AAB220

 

WEBLIGHTSEAGREEN

 

clWebLightSkyBlue

$FACE87

 

WEBLIGHTSKYBLUE

 

clWebLightSlateGray

$998,877

 

WEBLIGHTSLATEGRAY

 

clWebLightSteelBlue

$DEC4B0

 

WEBLIGHTSTEELBLUE

 

clWebLightYellow

$E0FFFF

 

WEBLIGHTYELLOW

 

clWebLime

$00FF00

 

WEBLIME

 

clWebLimeGreen

$32CD32

 

WEBLIMEGREEN

 

clWebLinen

$E6F0FA

 

WEBLINEN

 

clWebMagenta

$FF00FF

 

WEBMAGENTA

 

clWebMaroon

$80

 

WEBMAROON

 

clWebMediumAquamarine

$AACD66

 

WEBMEDIUMAQUAMARINE

 

clWebMediumBlue

$CD0000

 

WEBMEDIUMBLUE

 

clWebMediumOrchid

$D355BA

 

WEBMEDIUMORCHID

 

clWebMediumPurple

$DB7093

 

WEBMEDIUMPURPLE

 

clWebMediumSeaGreen

$71B33C

 

WEBMEDIUMSEAGREEN

 

clWebMediumSlateBlue

$EE687B

 

WEBMEDIUMSLATEBLUE

 

clWebMediumSpringGreen

$9AFA00

 

WEBMEDIUMSPRINGGREEN

 

clWebMediumTurquoise

$CCD148

 

WEBMEDIUMTURQUOISE

 

clWebMediumVioletRed

$8515C7

 

WEBMEDIUMVIOLETRED

 

clWebMidnightBlue

$701,919

 

WEBMIDNIGHTBLUE

 

clWebMintcream

$FAFFF5

 

WEBMINTCREAM

 

clWebMistyRose

$E1E4FF

 

WEBMISTYROSE

 

clWebMoccasin

$B5E4FF

 

WEBMOCCASIN

 

clWebNavajoWhite

$ADDEFF

 

WEBNAVAJOWHITE

 

clWebNavy

$800,000

 

WEBNAVY

 

clWebOldLace

$E6F5FD

 

WEBOLDLACE

 

clWebOlive

$8,080

 

WEBOLIVE

 

clWebOliveDrab

$238E6B

 

WEBOLIVEDRAB

 

clWebOrange

$00A5FF

 

WEBORANGE

 

clWebOrangeRed

$0045FF

 

WEBORANGERED

 

clWebOrchid

$D670DA

 

WEBORCHID

 

clWebPaleGoldenrod

$AAE8EE

 

WEBPALEGOLDENROD

 

clWebPaleGreen

$98FB98

 

WEBPALEGREEN

 

clWebPaleTurquoise

$EEEEAF

 

WEBPALETURQUOISE

 

clWebPaleVioletRed

$9370DB

 

WEBPALEVIOLETRED

 

clWebPapayaWhip

$D5EFFF

 

WEBPAPAYAWHIP

 

clWebPeachPuff

$B9DAFF

 

WEBPEACHPUFF

 

clWebPeru

$3F85CD

 

WEBPERU

 

clWebPink

$CBC0FF

 

WEBPINK

 

clWebPlum

$DDA0DD

 

WEBPLUM

 

clWebPowderBlue

$E6E0B0

 

WEBPOWDERBLUE

 

clWebPurple

$800,080

 

WEBPURPLE

 

clWebRed

$0000FF

 

WEBRED

 

clWebRosyBrown

$8F8FBC

 

WEBROSYBROWN

 

clWebRoyalBlue

$E16941

 

WEBROYALBLUE

 

clWebSaddleBrown

$13458B

 

WEBSADDLEBROWN

 

clWebSalmon

$7280FA

 

WEBSALMON

 

clWebSandyBrown

$60A4F4

 

WEBSANDYBROWN

 

clWebSeaGreen

$578B2E

 

WEBSEAGREEN

 

clWebSeashell

$EEF5FF

 

WEBSEASHELL

 

clWebSienna

$2D52A0

 

WEBSIENNA

 

clWebSilver

$C0C0C0

 

WEBSILVER

 

clWebSkyBlue

$EBCE87

 

WEBSKYBLUE

 

clWebSlateBlue

$CD5A6A

 

WEBSLATEBLUE

 

clWebSlateGray

$908,070

 

WEBSLATEGRAY

 

clWebSnow

$FAFAFF

 

WEBSNOW

 

clWebSpringGreen

$7FFF00

 

WEBSPRINGGREEN

 

clWebSteelBlue

$B48246

 

WEBSTEELBLUE

 

clWebTan

$8CB4D2

 

WEBTAN

 

clWebTeal

$808,000

 

WEBTEAL

 

clWebThistle

$D8BFD8

 

WEBTHISTLE

 

clWebTomato

$4763FF

 

WEBTOMATO

 

clWebTurquoise

$D0E040

 

WEBTURQUOISE

 

clWebViolet

$EE82EE

 

WEBVIOLET

 

clWebWheat

$B3DEF5

 

WEBWHEAT

 

clWebWhite

$FFFFFF

 

WEBWHITE

 

clWebWhiteSmoke

$F5F5F5

 

WEBWHITESMOKE

 

clWebYellow

$00FFFF

 

WEBYELLOW

 

clWebYellowGreen

$32CD9A

 

WEBYELLOWGREEN

 


  1. XM 2021.01.12 13:58

    혹시 define 해 놓은 자료는 없을까요?

RAD Studio 단축키


바로 가기작업

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 + ↑

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

참고


AnsiString 메소드 정리

* AnsiCompare
현재 문자열과 파라미터로 지정한 문자열의 크기를 비교하여 결과를 되돌려 줍니다.
이때 파라미터로 지정된 문자열은 AnsiString 문자열과 비교하여 AnsiString 문자열보다 크면 0보다 큰수를 반환하고, 작을경우에는 0보다 작은수를 , 같으면 0을 반환합니다.
원형
 int __fastcall AnsiCompare(const AnsiString & rhs) const;

Ex 
AnsiString strCompare = "AAA";
int nReturn;
nReturn = strCompare.AnsiCompare("BBB");
if (nReturn > 0) ShowMessage("값이 큽니다.\n");
else if (nReturn > 0) ShowMessage("값이 작습니다.\n");
else  ShowMessage("값이 같습니다.\n");      

Result
값이 작습니다.


...............

[참고] http://bcbjournal.org/articles/vol1/9708/An_AnsiString_class_reference.htm
아래 부분 참고...

    Visual C++ DLL과의 문제점

    실제 세계에서는 Visual C++에서 만든 DLL을 호출하는 일이나 C++Builder에서 만든 DLL을 호출하는 것이나 비슷합니다. 불행하게도, Inprise와 Microsoft는 여러 가지 면에서 다르게 DLL을 구현하였습니다. 처음에 시작할 때 Inprise와 Microsoft는 OBJ에 대한 파일 포맷과 임포트 라이브러리 파일에 대한 포맷을 달리 하였습니다.Visual C++은 COFF 라이브러리를 사용하는 반면 Inprise는 OMF를 사용합니다.  이것이 의미하는 바는 C++Builder 프로젝트에 마이크로소프트에서 생성된 임포트 라이브러리를 추가할 수 없다는 것을 의미합니다.
    다행스럽게도 Inprise는 IMPLIB 라는 유틸리티를 제공함으로써 포맷 형식이 다른 것을 극복할 수 있게 되었습니다.

    2가지 제품 역시 링커 네이밍 규칙도 다릅니다. 이 현상은 C++Builder로부터 Visual C++ DLL을 호출할 때 가장 많이 나타나는 현상입니다.
    DLL이나 OBJ 안에 모든 함수는 링커 이름을 가지고 있습니다. 이 링커는 컴파일 시 프로토타입화된 함수들을 해석할 수 있는 링커 이름들을 사용합니다. 이 링커는 프로그램에 의해 필요하다고 생각되는 링커 이름을 가진 함수를 찾지 못한다면 "unresolved external error"를 발생시키게 됩니다.

    Visual C++ 와 C++Builder 의 네이밍 규칙

    호출 규칙 VC++ VC++ (DEF) C++Builder
    __stdcall _MyFunction@4 MyFunction MyFunction
    __cdecl MyFunction MyFunction _MyFunction

    경우 1: DLL이 오직 __stdcall 함수들만 포함하고 있고 DLL 벤더가 DEF 파일을 사용할 경우.

    IMPLIB는 다음과 같이 사용합니다:

      IMPLIB (목적 lib 이름) (소스 dll)
    예를 들면,
      IMPLIB mydll.lib mydll.dll
    그리고 프로젝트에 바로 mydll.lib를 첨가하기만 하면 됩니다.

    경우 2: DLL이 __cdecl 함수를 포함하고 있거나 장식된 이름의 __stdcall 함수를 사용하는 경우.

    이 경우 IMPDEF 유틸리티를 다음과 같이 사용하여 DEF 파일을 만듭니다:

      IMPDEF (목적 DEF 파일) (소스 DLL 파일).
    예를 들면,
      IMPDEF mydll.def mydll.dll
    IMPDEF를 실행시킨 후에, DEF 파일을 열어봅니다. Visual C++로 컴파일된 DLL일 경우 위의 명령어로 생성되는 DEF파일의 형태는 다음과 같을 것입니다:
      LIBRARY   DLL.DLL

      EXPORTS

        CdeclFunction       @1
        UnknownFunction     @3
        _StdCallFunction@4  =_StdCallFunction      @2
    다음 단계는 C++Builder가 인식할 수 있는 DLL 함수 이름으로 알리아스를 변경하는 일입니다. 다음의 예가 이 DEF 파일을 적절히 변경한 예입니다.
      EXPORTS
        알리아스 타입 변경
        (Borland 이름)= (Visual C++에 의해 노출되는 이름)
        _CdeclFunction  = CdeclFunction
        _UnknownFunction = UnknownFunction
        StdCallFunction = _StdCallFunction@4
    마지막 단계는 알리아스화된 DEF 파일로부터 알리아스화된 임포트 라이브러리를 만드는 일입니다. 다음의 형태를 따라야 합니다. 이 경우 DLL을 사용하는 것이 아니라 DEF 파일을 사용한다는 점에 주의합시다.
      IMPLIB (목적 lib 파일) (소스 def 파일)
    예를 들면,
      IMPLIB mydll.lib mydll.def
    임포트 라이브러리가 생성되었다면 mydll.lib를 첨가하면 됩니다.

    2)DLL이 싫으면, 아예 OCX로 구현하면 됩니다. 이렇게 하면 Delphi와 C++Builder에서 구현할 수 있습니다. 

    볼포에서 발췌...

  1. Favicon of http://misfits.tvfanclub.net/ BlogIcon Отбросы 2012.11.03 22:48

    감사

DLL을 작성하다 보면 DLL을 호출하는 부분이 누구인지 궁금할 때가 있다.
이럴때 DllMain 부분을 다음과 같이 작성하면 누가 호출하는지 알수가 있다..
VCL과 MFC에서 사용하는 방법이 조금 다르다... 다음은 MFC에서 사용하는 방법으로 작성하여 본 것이다..

VCL에서는 호출하는 정의가 조금 다르다.. 그래서.. DLL_PROCESS_ATTACH 부분이 조금 다르다...

VCL : int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
MFC : BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)





아래는 참고 내용이다..

DllMain


LL 을 만들때 Import 헤더와 Export 헤더가 다르게 나올수 있다..

이럴때.. 헤더 파일에 다음과 같이 지시자를 만들면 조금 하나의 헤더파일만 작성하면 다른 헤더파일을 만들 필요가 없다..

#ifdef __DLL__
#define DLL_FUNC __declspec(dllexport)
#else
#define DLL_FUNC __declspec(dllimport)
#endif

그리고 전체 헤더에 전역으로 처리하고자 할때에도 다음과 같은 부분을 만들고 그 사이에 헤더 파일을 작성하면 범위 안의 함수들은 같은 전역으로 처리가 가능하다..

#ifdef __cplusplus
extern "C"{
#endif
.... 내용......
#ifdef __cplusplus
}
#endif

다음은 위의 방법으로 만들어본 헤더 파일이다...
볼프에서 발췌....

코드기어 라이선스 등록횟수 초과시에 아주 유용한 사이트

http://reg.codegear.com/bump

직접 등록시
https://reg.codegear.com/srs6/activation.do

http://reg.codegear.com 에서는 이 두가지 정보를 조합해서 특정 시리얼 넘버를 소유한 사람이 특정 PC에서만 적용이 가능한 activation 파일을 만들어내고, 델파이/C++빌더가 실행될 때 activation 파일이 발견되면 내부적으로 라이선스 인증 처리를 합니다.

그래서 activation 파일을 받는 방식으로 등록을 하려면 당연히 Registrarion Code가 필요한데, 델파이/C++빌더 2007 버전의 경우, 설치후 첫번째 실행시에 나타나는 등록 마법사(Registration Wizard)에서 Registrarion Code가 나타나지 않습니다. 이건 2007 버전의 등록 마법사의 버그라고 생각되는데요. (다른 버전들에서는 모두 이상없이 나타납니다)

편법이지만, 다음과 같은 방법으로 2007 버전의 등록 마법사에서 필요한 Registrarion Code를 알아낼 수 있습니다.
제품을 먼저 설치하고 실행하려고 시도하면 아시다시피 등록 마법사가 나타납니다. 이때 Serial number 와 user name을 넣으세요. 그런 후 바로 Cancel 버튼을 클릭하여 취소하고 나갑니다.

그런 후 사용자 계정 홈 디렉토리(XP의 경우 C:\Documents and Settings\<user name>\)에 보시면 sanct.log 파일이 생성되어 있습니다. 이 파일을 열어보시면 윗부분에 Registration Key: 라고 해서 써있습니다. 이것이 Registration Code입니다.
빌더에서 가끔 보면 디자인 패키지에는 컴포넌트가 있으나 디자인 팔레트가 나타나지 않을 경우가 있다.
이럴때 사용하고자 할때에는

.cpp에 추가할 내용
#pragma link "사용할_OCX"

.h에 추가할 내용
#include "사용할_OCX.h"

를 하고 해당 컴포넌트를 사용하면 사용 가능함..
[원문주소] http://cbuilder.borlandforum.com/impboard/impboard.dll/trackback?sn=97053
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=108
Delphi 로 된 Component 를 설치하다 보면 Dsgnintf.dcu 또는 Designintf.dcu 를 찾을 수 없다는
에러 메시지를 보게 됩니다. 이 에러 메시지가 나는 이유는 무엇일까요?

Component 에는 Design Time 에서 사용하기 쉽도록 Component Editor, Property Editor 가
포함되어 있는 경우가 있습니다. Delphi 에서 Design Time 에 필요한 Component Editor, Property Editor 를
사용하기 위해서는 uses 부분에 Designintf 또는 Dsgnintf 를 사용해야 합니다. 어떤 것을 사용할지는
Delphi 버전에 따라 다르겠지요. Delphi 6 이후부터는 Designintf 를 사용합니다.

C++Builder 에서 사용할 경우 약간 까다로운 문제가 발생합니다.
C++Builder 에는 Delphi Compiler 인 dcc32.exe 와 C++ Compiler 인 bcc32.exe 가 공존합니다.
따라서 패키지 파일인 bpk 파일에 두개의 컴파일러를 위한 옵션이 따로 있습니다.

bpk 를 텍스트 에디터로 열어서 그 내용을 보면 다음과 같은 항목이 있습니다.

<CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
      -tWM"/>
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>


CFLAG1 은 C++ Compiler 인 bcc32.exe 를 위한 옵션입니다.
PFLAGS 는 Delphi Compiler 인 dcc32.exe 를 위한 옵션입니다.

Component 를 C++Builder 로 만들었다면 PACKAGES value 값에 designide.bpi 가 포함됩니다.
<PACKAGES value="rtl.bpi ApLabel_bcb6.bpi designide.bpi vcl.bpi vcljpg.bpi"/>


Delphi 로 Component 를 만들었다면 문제가 발생합니다. Delphi Compiler 인 dcc32.exe 에
designide 패키지를 사용하겠다는 것을 알려주어야 됩니다. 그런데 얄밉게도 Builder 가 알아서
처리하지 못합니다. 따라서 사용자가 수동으로 처리를 해주어야 합니다.

dcc32.exe 의 옵션을 보면 -LU 라는 옵션이 있습니다. 패키지를 사용하겠다는 것을 알려주는
옵션입니다. 이 옵션을 사용자가 수동으로 지정해 줍니다. 다음과 같이 말입니다.

<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M -LUDesignIde"/>

+ Recent posts