DLL中函数间变量引用问题? ( 积分: 50 )

  • 主题发起人 主题发起人 may158
  • 开始时间 开始时间
M

may158

Unregistered / Unconfirmed
GUEST, unregistred user!
DLL中函数间变量引用问题?
DLL编程
问题:在函数B_BOT()中如何引用函数B_TOP()中的XX?
不用全局变量.
unit FUNCLIST;

interface
uses
Math, DATADEF, SysUtils;

implementation

function B_TOP(pData: pTagCALCINFO): integer
stdcall;
var
i, last: integer;
xx: array of integer;
top: array of Single;
begin
last := pData^.m_nNumData - 1;
SetLength(top, last * SizeOf(Single));
SetLength(xx, last * SizeOf(Single));
xx[0] := 1;
for i := 0 to last do begin
top := pData^.m_pData.m_fHigh;
if top > top[i - 1] then begin
pData^.m_pResultBuf := top;
xx := 1;
end else
xx := 0
end;
SetLength(top, 0);
SetLength(xx, 0);
Result := 0;
end;

function B_BOT(pData: pTagCALCINFO): integer
stdcall;
var
i, last: integer;
bot: array of Single;
begin
last := pData^.m_nNumData - 1;
SetLength(bot, last * SizeOf(Single));
for i := 0 to last do begin
bot := pData^.m_pData.m_fLow;
if xx = 1 then begin //引用上边函数B_TOP中的xx作为限制条件-如何引用???
pData^.m_pResultBuf := bot;
end;
end;
SetLength(bot, 0);
SetLength(xx, 0);
Result := 0;
end;

exports //DLL输出函数
B_TOP,
B_BOT;
end.
 
全局变量
 
初学-dll中全局变量怎样设呢?
按照下面将XX设成全局变量可以通过,但没有输出
unit FUNCLIST;

interface
uses
Math, DATADEF, SysUtils;

implementation
var xx: array of integer;//设成全局变量
function B_TOP(pData: pTagCALCINFO): integer
stdcall;
 
你把这个数组放你的主程序好了,然后在调用B_BOT的时候再传递过来。
 
问题已经解决!谢谢
 
后退
顶部