gpt4 book ai didi

Delphi XE7 的 C++ 函数

转载 作者:行者123 更新时间:2023-11-30 05:13:08 26 4
gpt4 key购买 nike

我有一个 C++ 函数:

 long CSP2_API csp2GetPacket(char szData[], long nBcrNr, long nMaxDataSz) 

参数是:

szData: buffer where the barcode data is stored in 
nBcrNr: the desired barcode’s index (which starts from 0L)
nMaxDataSz: the maximum size of the szData buffer

我的处理方式是:

type
TBarcode = Array[0..99] of AnsiChar;


function csp2GetPacket(szBarData : TBarCode;
nBarcodeNumber: LongInt;
nMaxLength: LongInt): LongInt cdecl {$IFDEF WIN32}stdcall {$ENDIF}; external 'CSP2.DLL';

并使用...调用

procedure TForm1.Button1Click(Sender: TObject);
var
BarCode : TBarcode;
begin

BarCode := #0;
csp2GetPacket(BarCode,0,SizeOf(BarCode));

end;

C++ 文档确认它使用标准 ASCII 文本作为条形码

是否有更好(更正确的方法)调用 C++ 函数?或者这是可以接受的吗?

最佳答案

如果您知道条形码数据永远不会超过 100 个字节,那么您的方法就可以了,尽管您的函数声明应该更像这样:

type
TBarcode = Array[0..99] of AnsiChar;

function csp2GetPacket(szBarData: TBarCode; nBarcodeNumber: LongInt; nMaxLength: LongInt): LongInt; cdecl; external 'CSP2.DLL';

或者,如果该函数确实在 Windows 上使用 stdcall 而不是 cdecl:

function csp2GetPacket(szBarData: TBarCode; nBarcodeNumber: LongInt; nMaxLength: LongInt): LongInt; stdcall; external 'CSP2.DLL';

无论哪种方式,更正确的函数翻译是将 szBarData 参数声明为 PAnsiChar:

function csp2GetPacket(szBarData: PAnsiChar; ...) ...

您仍然可以将固定数组变量传递给 PAnsiChar 参数。

关于Delphi XE7 的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com