문제

COM 시나리오에서 Delphi에서 Type-Safe 열거를 어떻게 구현할 수 있습니까?기본적으로 열거 형의 기본 상수 세트를 클래스에 캡슐화 된 정적 최종 객체 참조 세트로 바꾸고 싶습니다.. Java에서는 다음과 같이 할 수 있습니다. 라코 디스

사용자 정의 열거 유형을 사용하여 비교합니다. 라코 디스

현재 이전 Delphi 5를 사용하고 있으며 인터페이스에서 일부 열거 형 매개 변수를 선언하여 클라이언트 개체가 필요한 열거 형 대신 정수 (또는 long) 유형을 전달할 수 없도록하고 싶습니다. 네이티브 델파이 열거 형을 사용하는 것 외에 열거 형을 구현하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

이제 COM을 언급하는 질문의 성격에 대한 몇 가지 단서를 제공해 주셨습니다. 의미를 이해합니다.COM은 Delphi가 COM 서버와 클라이언트간에 알고있는 유형의 하위 집합 만 마샬링 할 수 있습니다.TLB 편집기에서 열거 형을 정의 할 수 있지만 이들은 기본적으로 정수 유형 (LongWord) 인 TOleEnum 유형입니다.원하는 정수 값 TOleEnum 유형의 변수를 가질 수 있으며 서로 다른 열거 형 유형의 값을 할당 할 수 있습니다.실제로 형식이 안전하지 않습니다.

Delphi의 COM이 형식 안전 열거 형을 대신 사용할 수없는 이유를 생각할 수 없지만 그렇지 않습니다.나는 그것에 대해 많은 것을 할 수 없을 것 같아 두렵다.다가오는 Delphi 2009 버전에서 TLB 편집기의 변경으로 인해 변경 될 수 있습니다.

기록을 위해 : TLB 편집기를 사용하지 않을 때 Delphi는 매개 변수로 형식 안전 열거 형을 가진 메소드와 완벽하게 인터페이스 할 수 있습니다.

다른 팁

네이티브 Delphi 열거 형은 이미 형식이 안전합니다.Java 열거 형은 이전에는 열거 형이 전혀 없었기 때문에 해당 언어의 혁신이었습니다.그러나 아마도 다른 기능을 의미 할 수도 있습니다.-열거 형 값 앞에 유형 이름이 붙습니다.

출시 예정인 Delphi 2009 및 Delphi for .NET 제품의 마지막 버전은 scoped enums라는 새로운 지시문을 지원합니다.다음과 같이 보입니다 : 라코 디스

네이티브 Delphi 열거 형에 어떤 문제가 있습니까?형식에 안전합니다. 라코 디스

Delphi 2005 이후로 클래스에 const를 가질 수 있지만 Delphi 5는 그렇지 않습니다. 라코 디스

볼랜드가 TLB 편집기에서 유형 안전 열거 형을 사용하지 않는 이유를 알고 있다고 생각합니다.COM의 열거 형은 다른 값이 될 수 있지만 Delphi 6 (내 생각에)이 할 수 있기 때문에 Delphi에서만 가능합니다. 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top