2011-12-08 3 views
6

인터페이스를 만들고 싶지만 뭔가를 모릅니다.DLL proc에서 out 매개 변수로 OleVariant를 사용할 수 있습니까?

OleVariant은 "표준"문자열을 포함하는 "표준"입니다 - 통과하고 반환 하시겠습니까?

function Any(Input : OleVariant; out Output : OleVariant) : integer; stdcall; 

또 다른면은 .NET, C# 또는 C++ 또는 Delphi 일 수 있습니다.

그래서 결과를 위해 사전 정의 된 크기의 버퍼를 전달하지 않고도 "문자열"결과를 OleVariant으로 되돌릴 수 있습니까?

+1

WideString을 사용하면 문자열 변수를 전달하고 문제를 줄일 수 있습니다. 일부 추가 포인터에 대해 [여기] (http://stackoverflow.com/questions/8414972/delphis-sharemem-when-it-is-not-needed)를 가지고 –

+1

OleVariant는 "표준"문자열을 포함하지 않습니다. 표준 문자열이 Delphi 문자열 인 경우). OleVariant에 문자열을 할당하면 문자열이 "WideString"으로 변환됩니다. –

답변

11

예, OleVariant은 완벽하게 안전합니다. ActiveX, ComSvcs 및 MSXML과 같이 Delphi와 함께 배포 된 COM 관련 유닛 전체에서 사용되는 것을 볼 수 있습니다. 표준 Windows API 단위가이를 사용하므로 할 수 있습니다.

그래도 문자열이 필요하다면 대신 WideString을 사용해야합니다. Windows BSTR 유형과 동일합니다.

관련 문제