S
sl98_1
Unregistered / Unconfirmed
GUEST, unregistred user!
5) 调用函数原型:
long OltpTransData(unsigned long msgType,unsigned long packageType,
unsigned long packageLength,char *str,LPTSTR com);
I. msgType :业务请求类型;具体数值参见参数数值表
II. packageType :数据解析格式类型,系统重组数据时使用;具体数值参见参数数值表
III. packageLength :数据串的长度;需要参见参数数值表
IV. str :数据串;调用时,通过数据串传入参数;函数返回时,数据串中包含返回的数据
V. com :数据请求串口(根据读卡器插口位置,本参数可 以取值:‘com1’,‘com2’)
我写的代码如下
implementation
function OltpTransData(msgType,packageType,packageLength :longword ;str :STRING ;com :string):longint ;stdcall ;external 'OltpTransIc06.dll' name 'OltpTransData';
{$R *.dfm}
function TForm1.Space(vNum: Integer): string; //传入参数是你要的空格数量,整型值
var
i: Integer;
begin
Result := ''; //这里的两个引号之间没有空格,要连着写
for i := 1 to vNum do
begin
Result := Result + ' '; //这里的两个引号之间有一个空格,不要多写
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var fh :longint;
str,com : string;
begin
STR:=str+Space(255);
com:=TRIM(EDIT1.Text);
fh:=OltpTransData(1001,101,255,str,'com1');
if fh=0 then showmessage(str)
else showmessage(inttostr(fh));
但是执行结果报错 什么原因
就算成功也没有返回值 是不是我其中 str 这个变量应该用指针?
C#这样写 也报错
[DllImport("OltpTransIc06.dll",EntryPoint="OltpTransData",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
public static extern int OltpTransData(uint msgType,uint packageType,uint packageLength,ref string str,string com);
什么原因
long OltpTransData(unsigned long msgType,unsigned long packageType,
unsigned long packageLength,char *str,LPTSTR com);
I. msgType :业务请求类型;具体数值参见参数数值表
II. packageType :数据解析格式类型,系统重组数据时使用;具体数值参见参数数值表
III. packageLength :数据串的长度;需要参见参数数值表
IV. str :数据串;调用时,通过数据串传入参数;函数返回时,数据串中包含返回的数据
V. com :数据请求串口(根据读卡器插口位置,本参数可 以取值:‘com1’,‘com2’)
我写的代码如下
implementation
function OltpTransData(msgType,packageType,packageLength :longword ;str :STRING ;com :string):longint ;stdcall ;external 'OltpTransIc06.dll' name 'OltpTransData';
{$R *.dfm}
function TForm1.Space(vNum: Integer): string; //传入参数是你要的空格数量,整型值
var
i: Integer;
begin
Result := ''; //这里的两个引号之间没有空格,要连着写
for i := 1 to vNum do
begin
Result := Result + ' '; //这里的两个引号之间有一个空格,不要多写
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var fh :longint;
str,com : string;
begin
STR:=str+Space(255);
com:=TRIM(EDIT1.Text);
fh:=OltpTransData(1001,101,255,str,'com1');
if fh=0 then showmessage(str)
else showmessage(inttostr(fh));
但是执行结果报错 什么原因
就算成功也没有返回值 是不是我其中 str 这个变量应该用指针?
C#这样写 也报错
[DllImport("OltpTransIc06.dll",EntryPoint="OltpTransData",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
public static extern int OltpTransData(uint msgType,uint packageType,uint packageLength,ref string str,string com);
什么原因