2009-04-20 3 views
5

Delphi의 대부분의 구성 요소 (VCL)가 두 부분으로 분리되어 있음을 확인했습니다.
1) 디자인 타임 패키지
2) 런타임 패키지
Delphi의 런타임 및 디자인 타임 패키지에 대한 호의

왜이 모든 소란. RunTime과 DesignTime 패키지가 하나의 단일 패키지로 통합되면 어떤 차이가 있습니까?

저는이 분리 논리를 실제로 이해할 수 없었습니다.

그럼이 논리는 무엇입니까?

한 번 언급 한 사람은이 구별이 Microsoft가 정의한 구성 요소 표준을 채택하고 따르지 않도록하기위한 것이라고 말했습니다. 정말로 이것 뒤에는 논리가 없습니다.

사실인가요?

답변

11

A. 일부 구성 요소는 런타임 응용 프로그램에 포함하지 않을 수도있는 속성 편집기와 같이 크고 복잡한 디자인 타임 기능이 있습니다.

B. 일부 구성 요소 공급 업체는 크고 복잡한 디자인 타임 기능에 로열티가없는 런타임 사용을 허가하지 않고 개발자 만 사용할 수 있도록 제한합니다.

+0

포인트 A : 예를 들어 DesignTime 및 RunTime 패키지가 컴파일 된 EXE에 포함되면 어떻게 될까요? 나는 지금이 일을 요구하고있다. 주어진 시간에 거의 항상 충분한 메모리가 이용 가능하기 때문에 메모리는 더 이상 제약이 없다. 포인트 B에 어느 정도 동의하지만 좋은 프로그래머에게는 RunTime 동안 DesignTime 인터페이스를로드 할 수없는 로직을 구현하는 작은 작업이 될 것입니다. 이것은 항상 문제없이 COM 구성 요소의 경우입니다. –

+2

디자인 타임 단위를 사용하는지 여부는 런타임시가 아니라 컴파일 된 시간에 해결됩니다. 패키지는 정적으로 링크 된 DLL입니다. 따라서 패키지를 사용하면 대상을 실행 파일에 종속적으로 실행할 수 있습니다. Windows가 모든 종속성을 찾지 못하면 실행 파일을로드하고 실행할 수 없습니다. –

+0

패키지가 정적으로 링크되어 있으면 모든 종속성을 찾을 필요가 있기 때문에 그렇게 생각하지 않습니까? –

4
  1. 디자인 타임 물건은 둘 소스 코드가없는있는 델파이의 내부 단위/패키지를 사용할 수 없으며 법적 바이너리 형태로 배포 할 수 있습니다.
  2. 응용 프로그램에 Delphi 을 사용자의 컴퓨터에 설치해야 할 필요가 없습니다.

로직은 자신의 코드를 "접착제"코드와 별도로 유지하는 것이므로 &은 IDE에서 사용하기가 쉽습니다. 이 연구의 조금을했던 경우

+0

예를 들어, Grid 컨트롤의 VCL 작성기로 사용자가 그리드 레이아웃 등을 런타임에 변경할 수 있도록 디자인 타임에 수행 할 수있는 기능을 제공하고 싶습니다. 이? 결국 CG로 제공되는 표준 컨트롤을 사용하여 빌드해야하거나 UI를 처음부터 새로 만들면됩니까? –

+1

네, 그렇게 할 수 있습니다. Designtime은 Delphi IDE에서 사용하는 라이브러리를 가리 킵니다. 즉, IDE와 상호 작용하는 모든 코드에서 속성 편집자, 코드 작성 마법사가 포함됩니다. 예를 들어, IDE에서 TListBox의 Items 속성을 편집하는 데 사용할 수있는 TStrings 편집기는 디자인 타임입니다. TListBox 자체가 아닙니다. 런타임에 항목을 편집 할 수 있도록 사용자에게 유사한 편집기를 제공하려는 경우 사용자가 직접 편집기를 제공해야합니다. –

5

, 당신은

은 이미 주된 이유는 당신이 어떠한 델파이 디자인 유닛을 포함 할 수 없다는 것입니다 설명 ... this SO question 질문 미만 일 전에 발견 한 것 런타임 패키지. 그리고 IDE 내에서만 실행할 수있는 코드로 실행 파일을 확장 할 이유가 없습니다.

+1

이것은 snark를 제외하고 허용 된 대답이어야합니다. :-) –