2011-12-08 13 views
6

Quiero hacer una interfaz, pero no sé algo.¿OleVariant se puede usar para el parámetro out en el procedimiento DLL?

¿Es OleVariant un "estándar" para contener una cadena "estándar" - para pasar y devolver?

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

El otro lado es quizás .NET, C# o C++ o Delphi.

Entonces, ¿pueden respaldar algunos resultados de "cadena" en OleVariant sin pasar un buffer de tamaño predefinido para el resultado?

+1

Use WideString para pasar variables de cadena y ahórrese el problema. Eche un vistazo [aquí] (http://stackoverflow.com/questions/8414972/delphis-sharemem-when-it-is-not-needed) para algunos punteros adicionales –

+1

OleVariant * no * contendrá una cadena "estándar" (si una cadena estándar es una cadena Delphi). Cuando asigna una cadena a OleVariant, la cadena se convertirá en "WideString". –

Respuesta

11

Sí, OleVariant es perfectamente seguro. Verá que se usa en todas las unidades relacionadas con COM distribuidas con Delphi, como ActiveX, ComSvcs y MSXML. Las unidades API estándar de Windows lo usan, por lo que también puedes.

Si siempre está esperando una cadena, en su lugar, debería preferir WideString. Es equivalente al tipo de Windows BSTR.

Cuestiones relacionadas