Я использовал midl для преобразования файла .idl в .tlb.Когда я импортирую этот файл .tlb в Delphi (XE7), он преобразует эту функцию записи, которая является частью
interface IWTSVirtualChannel : IUnknown
...
HRESULT Write(
[in] ULONG cbSize,
[in, size_is(cbSize)] BYTE *pBuffer,
[in] IUnknown *pReserved // must be NULL
);
, в этот код Delphi в файле _TLB.pas.
function Write(
cbSize: LongWord;
var pBuffer: Byte;
const pReserved: IUnknown): HResult; stdcall;
Однако 2-й параметр явно неверен.На мой взгляд, это должно быть что-то вроде
pBuffer : PAnsiChar;
Параметр представляет собой строку типа c, переданную в запись для отправки.
Так что мне кажется, что я должен просто отредактировать_TLB.pas файл и исправить его.Есть несколько других процедур, которые также имеют эту проблему.
Но я неохотно, так как мне придется переделывать редактирование каждый раз, когда я меняю .idl (надеюсь, не слишком часто; из-за связанных с этим проблем с отменой регистрации библиотеки типов .tlb перед ее повторным импортом.) но это кажется неправильным, и все же я вполне уверен, что он не будет работать как есть.
Что мне лучше всего делать?Придерживаться C ++ не вариант!