2010-06-22 2 views
3

델파이에서 계산 코어를 처음부터 다시 작성하고 있으며 다른 사람들이 코드를 작성할 수있는 방법을 찾고 있습니다.Delphi에서 자동화를 통해 객체 모델을 사용할 수있게 만드는 가장 쉬운 방법은 무엇입니까?

자동화가이 작업을 수행하는 데 상당히 안전한 방법입니다. 우리가 생각하고있는 한 가지 용도는 VBA/Office에서 사용할 수 있도록하는 것입니다. 또한 .NET 개체를 기반으로 .NET 어셈블리를 생성하는 것도 쉽습니다.

그러나 델파이에서 사용하기 쉬운 코드는 우리가 (데스크톱) UI를 쓰고 있기 때문에 사용하기 쉽습니다.

이제 Delphi에서 자동화 서버를 만드는 방법을 살펴 보았습니다. 유형 라이브러리 마법사에서 구성 요소를 디자인하고 기본 코드를 생성해야하는 번거 로움이 있습니다.

우리가 구현해야하는 계산은 아직 공식화되지 않은 공식 규칙 및 규정에 설명되어 있습니다. 따라서 완료되기 전에 변경 될 수 있습니다. 아마도 상당히 광범위하게 적용될 것입니다. 마지막 버전을 기다리는 것은 옵션이 아닙니다.

다른 방법으로는 전체 개체 모델을 먼저 완료하고 최상위 개체 만 설명하는 별도의 자동화 서버를 작성하고 $METHODINFO ON으로 전환하고 TObjectDispatch를 사용하여 모든 하위 개체를 반환 할 수 있습니다. 필자가 보았 듯이, IDispatch 인터페이스로 객체를 반환하는 래퍼를 작성해야하는 번거 로움이 있습니다. 거기에 100 가지 이상의 클래스가 있기 때문에 매력적인 옵션이 아닌 것 같습니다. 편집 : TObjectDispatch는 속성과 메서드에서 반환 된 모든 개체를 래핑하기에 충분히 똑똑합니다. 따라서 상위 오브젝트 만 랩핑해야합니다. 그러나 완벽한 유형 라이브러리가 없다는 것은 늦은 바인딩 만 가능하다는 것을 의미합니다.

Delphi에서 COM 액세스 가능 개체 모델을 작성하는 다른 방법이 있습니까? (읽기 쉽고 간편합니다)?

답변

2

형식 라이브러리 디자이너를 사용할 필요가 없습니다. .ridl 파일을 작성 또는 생성 (예 : Delphi 클래스의 RTTI에서)하여 자동화 라이브러리 프로젝트에 추가 할 수 있습니다.

+0

델파이 코드를 작성하고 RTTI를 사용하여 .ridl 파일을 생성 한 다음 델파이 코드를 적절한 인터페이스, GUID 및 물건으로 업데이트 하시겠습니까? 이 작업을 수행 할 수있는 도구가 있습니까? – Martijn

+0

.ridl에는 이미 GUID와 인터페이스 선언이 있어야합니다. Delphi에서 (유형 라이브러리 디자이너와 같이) 구현 스텁을 포함하는 Delphi 유닛을 생성 한 다음 원래 클래스에 속성/메소드 호출을 위임하여 구현을 채울 수 있습니다. 사용할 수있는 도구가 없지만 검색하지 않았습니다. –

0

RTTI에서 인터페이스 설명을 생성하는 것이 좋습니다. 인터페이스를 생성 한 후에는 델파이 유닛을 생성하고 클래스에서 구현할 수 있습니다. 물론 대다수는 이미 그 클래스로부터 인터페이스를 생성했기 때문에 이미 구현되어 있습니다. 늦은 바인딩 해결은 RTTI를 사용하고 스크립트 가능한 클래스의 공통 기본 클래스에서 IDispatch 및 IDispatchEx를 구현하여 직접 수행 할 수 있습니다.

관련 문제