2010-08-06 2 views
1

Delphi 2010 COM 개체에서 함수를 작성했습니다. 이 함수는 PChar를 사용하여 문자열을 반환합니다. C# .net에서 COM 개체를 사용하려고했습니다. 그래서, 내 C#에서 COM DLL에 대한 참조를 추가했습니다. NET 응용 프로그램.Delphi2010 COM 개체로 작성된 함수가 C# .net에 표시되지 않습니다.

이전에 작성한 다른 기능을 사용할 수 있지만 기능은 참조 탐색기 목록에 표시되지 않습니다.

나는이 이상한 문제의 이유를 알 수 없었다. 등록을 취소하고 COM 개체를 다시 등록했지만 여전히 동일한 문제가 발생 했습니까?

이전에 String 유형을 사용할 때 몇 가지 문제가있었습니다. 그래서 우리는 pchar을 시도했습니다. 델파이

샘플 코드 2010

기능 TILCalculation.TestString (RSLT 아웃 : PChar는) : WordBool; var sRes : String; begin sRes : = '이것은 테스트 데이터입니다 !!!'; StrPCopy (Rslt, sRes); 종료;

C#에서 다음을 시도했습니다. 선택한 참조 WindowsFormApplication Selected 참조를 추가하고 COM 탭을 선택합니다. COM 개체를 선택했습니다.

내 COM 개체가 개체 브라우저에 표시되는 것으로 나타났습니다. 그래서, 나는 객체를 확장하고 검사했다. 아아!!! 이 함수는 C# .net 참조에서 볼 수 없습니다. 이전에 만든 모든 기능

어떤 도움이 아주 많이 ADV에

TKS을 감상 할 수있다 벤

+2

스택 오버플로에 오신 것을 환영합니다. Delphi 클래스의 선언과 가져 오기에 사용하는 C# 코드를 보여주는 최소한의 코드 예제를 포함 시키십시오. (질문을 편집하여 해당 정보를 추가 할 수 있습니다.) 코드가 없으면 누군가가 직접 문제를 경험했으며 그 해답을 알고 있다고 도박을하고 있습니다. 코드를 사용하면 스스로 경험하지 않은 경우라도 잘못한 것을 인식하는 사람들로부터 이익을 얻을 수 있습니다. –

답변

1

를 PChar는 COM의 일반 형식이 아닙니다 볼 수 있습니다. 대신 WideString을 사용해 보셨습니까?

추신 : 더 나은 답변을위한 몇 가지 코드 예제가 포함되어있는 Rob의 제안을 참조하십시오.

+0

모든 Delphi 버전에는 WideString이 필요합니다. WideString은 COM 문자열로, Delphi의 ** string ** 유형과 다릅니다. Delphi ** 문자열 **을 외부 코드로 전달하는 것은 좋지 않습니다. –

+0

@Mason : 감사합니다. 나는 내 대답 –

+0

제안을 업데이 트했습니다. 나는 Widestring을 통과 시키려고 노력했고 그 문제는 지금 해결되었다. – user413088

관련 문제