簡體   English   中英

我將類型庫 ( .tlb ) 導入到 Delphi 中,但函數參數似乎不正確。 我該如何解決?

[英]I imported a type library ( .tlb ) into Delphi and a function parameter seems incorrect. How should I fix it?

我使用 midl 將 .idl 文件轉換為 .tlb。 當我將這個 .tlb 文件導入 Delphi (XE7) 時,它會轉換這個 Write 函數,它是

interface IWTSVirtualChannel : IUnknown
...

HRESULT Write(
    [in]            ULONG               cbSize,
    [in, size_is(cbSize)] BYTE          *pBuffer,
    [in]            IUnknown            *pReserved          // must be NULL
    );

到 _TLB.pas 文件中的這個 Delphi 代碼。

function Write(
 cbSize: LongWord; 
 var pBuffer: Byte; 
 const pReserved: IUnknown): HResult; stdcall;

然而,第二個參數顯然是不正確的。 在我看來它應該是這樣的

 pBuffer : PAnsiChar;

參數是一個c類型的字符串,傳入Write發送。

所以在我看來,我應該編輯 _TLB.pas 文件並修復它。 還有一些其他程序也有這個問題。

但我很不情願,因為我每次更改 .idl 時都必須重做編輯(希望不要太頻繁;在重新導入之前取消注冊 .tlb 類型庫的相關麻煩)但它沒有看起來是對的,但我相當肯定它不會按原樣工作。

我應該做的最好的事情是什么? 堅持使用 C++ 不是一種選擇!

這是一個指向字節數組的指針,其大小在第一個參數中提供。 第二個參數的正確翻譯是

pBuffer: PByte

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM