动态库PostTransact.dll函数的调用,我错在哪? 本帖最后由 linghive 于 2009-06-11 15:19:05 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 让你传空了:Icnum:传空 =>icnum:=pchar('0'); 还有就是你报告什么错误啊? 错误提示 Access violation at address 00378dc in module 'PostTransact.dll' 声明成数组传进去 即array[0..20] of char形式 DLL函数( procedure AddCardScore(icnum,trncd,billnum,trnamt,opercd,CardScore,Suc_flg:PChar);stdcall;external 'PostTransact.dll';)//-------------------------------------------------------procedure TForm1.Button2Click(Sender: TObject);var //{ icnum:pchar; //传空 A string // trncd:pchar; // 消费交易代码 A string // billnum:pchar; //销售点帐单号 A string // trnamt:pchar; //消费金额 A string // opercd:pchar; //挂帐操作员代码 A string//CardScore:pchar; // suc_flg:pchar; //挂帐成败标志 A string } params:array[1..7] of Pchar;begin //{ icnum:=pchar(''); // trncd:=pchar('001'); // billnum:=pchar('A123'); // trnamt:=pchar('100.00'); // opercd:=pchar('CA00'); // CardScore:=pchar('5'); // suc_flg:=pchar('1'); } params[1]:=pchar(''); params[2]:=pchar('002'); params[3]:=pchar('A123'); params[4]:=pchar('100'); params[5]:=pchar('CA00'); params[6]:=pchar('10'); params[7]:=pchar('0'); try // AddCardScore(icnum,trncd,billnum,trnamt,opercd,CardScore,Suc_flg); AddCardScore(params[1],params[2],params[3],params[4],params[5],params[6],params[7]); except showmessage('不正确.'); end;end;声明成数组传进去是象我上面这样的吗?还是有问题啊错误提示 Access violation at address 00378dc in module 'PostTransact.dll' 'PostTransact.dll'中的代码是怎样的,可能是dll内部错误,另外空值你指的是什么,nil还是'0'还是'',这些对dll内部代码处理时,可能会引起错误 'PostTransact.dll'中的代码是其他公司提供的,接口主要涉及到收入数据的传送和会员卡的使用问题,下面详细说明:一. 在其他厂商销售点中付现金调用动态库PostTransact.dll中的挂账函数Procedure PostTransaction(icnum,trnamt,billnum,paytrncd,trncd,opercd,notice,suc_flg,Err_Msg,nolimit:pchar);stdcall;external ‘PostTransact.dll’参数说明:均为必输参数Icnum:传空Trnamt:消费金额Billnum:销售点帐单号Paytrncd:付款交易代码(即人民币、信用卡等付款方式在酒店系统中配置的相应交易代码)Trncd:消费交易代码(销售点在中软系统中配置的交易代码)Opercd:挂帐操作员代码Notice:交易注释Suc_flg 返回的结果参数('1' 挂帐成功,'0' 挂帐失败)Err_Msg 返回的挂帐错误原因Nolimit:’0’ 超限强制挂帐,’1’ 超限不挂 所有参数都声明成array[0..20] of char形式,不是:params:array[1..7] of Pchar; var icnum:array[0..20]of char; //传空 trnamt:array[0..20]of char; //消费金额 billnum:array[0..20]of char; //销售点帐单号 paytrncd:array[0..20]of char; //付款交易代码 trncd:array[0..20]of char; // 消费交易代码 opercd:array[0..20]of char; //挂帐操作员代码 notice:array[0..20]of char; //交易注释 suc_flg:array[0..20]of char; //挂帐成败标志 Err_Msg:array[0..20]of char; //错误原因 nolimit:array[0..20]of char;他可能是用strpcopy往出传值的,你声明称pchar就会有问题了 记录被其他表使用后,不允许删除,该如何处理?急急! Delphi控件与注册表信息有关吗? delphi6.0+linux+oracle9i++php4.0?這個環境可以工作嗎? 高分请教问题!! 高分求超难SQL语句! 关于Delphi2005的问题,请兄弟姐妹们解答,100分 各位前辈,我有个dll与TadoQuery之间的问题 :问一道关于两数组排序的算法问题。 关于ADO连接PARDOX数据库的问题? 一个非专业问题,非女性请勿入... 大家好,小弟有个问题 希望大家能解决 看不懂phostent与twsadata是啥意思
还有就是你报告什么错误啊?
( procedure AddCardScore(icnum,trncd,billnum,trnamt,opercd,CardScore,Suc_flg:PChar);stdcall;external 'PostTransact.dll';
)
//-------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
//{ icnum:pchar; //传空 A string
// trncd:pchar; // 消费交易代码 A string
// billnum:pchar; //销售点帐单号 A string
// trnamt:pchar; //消费金额 A string
// opercd:pchar; //挂帐操作员代码 A string
//CardScore:pchar;
// suc_flg:pchar; //挂帐成败标志 A string }
params:array[1..7] of Pchar;
begin
//{ icnum:=pchar('');
// trncd:=pchar('001');
// billnum:=pchar('A123');
// trnamt:=pchar('100.00');
// opercd:=pchar('CA00');
// CardScore:=pchar('5');
// suc_flg:=pchar('1'); } params[1]:=pchar('');
params[2]:=pchar('002');
params[3]:=pchar('A123');
params[4]:=pchar('100');
params[5]:=pchar('CA00');
params[6]:=pchar('10');
params[7]:=pchar('0'); try
// AddCardScore(icnum,trncd,billnum,trnamt,opercd,CardScore,Suc_flg);
AddCardScore(params[1],params[2],params[3],params[4],params[5],params[6],params[7]);
except
showmessage('不正确.');
end;
end;声明成数组传进去是象我上面这样的吗?还是有问题啊错误提示 Access violation at address 00378dc in module 'PostTransact.dll'
一. 在其他厂商销售点中付现金
调用动态库PostTransact.dll中的挂账函数
Procedure PostTransaction(icnum,trnamt,billnum,paytrncd,trncd,opercd,notice,suc_flg,Err_Msg,
nolimit:pchar);stdcall;external ‘PostTransact.dll’
参数说明:均为必输参数
Icnum:传空
Trnamt:消费金额
Billnum:销售点帐单号
Paytrncd:付款交易代码(即人民币、信用卡等付款方式在酒店系统中配置的相应交易代码)
Trncd:消费交易代码(销售点在中软系统中配置的交易代码)
Opercd:挂帐操作员代码
Notice:交易注释
Suc_flg 返回的结果参数('1' 挂帐成功,'0' 挂帐失败)
Err_Msg 返回的挂帐错误原因
Nolimit:’0’ 超限强制挂帐,’1’ 超限不挂
var
icnum:array[0..20]of char; //传空
trnamt:array[0..20]of char; //消费金额
billnum:array[0..20]of char; //销售点帐单号
paytrncd:array[0..20]of char; //付款交易代码
trncd:array[0..20]of char; // 消费交易代码
opercd:array[0..20]of char; //挂帐操作员代码
notice:array[0..20]of char; //交易注释
suc_flg:array[0..20]of char; //挂帐成败标志
Err_Msg:array[0..20]of char; //错误原因
nolimit:array[0..20]of char;他可能是用strpcopy往出传值的,你声明称pchar就会有问题了