[英]I'm trying to round a float to two decimal points but it's incorrect. How to fix this rounding error in C++?
[英]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.