首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

传参时类型不匹配,万分感谢!

2012-05-04 
求助:传参时类型不匹配,万分感谢!!定义了个递归函数:-------------------------------------------interfa

求助:传参时类型不匹配,万分感谢!!
定义了个递归函数:
-------------------------------------------
interface
  uses Windows,Classes,Messages;

  type
  PKLine=^TKLine;
  function EMA(const s:integer;kgroup:TKLineGroup;kline:PKLine;const period:integer):single;
  {...}

implementation
  function EMA(const s:integer;kgroup:TKLineGroup;kline:PKLine;const period:integer):single;
 var
  {...}
  begin
   {...}
  if (条件值) then {初始值是0吗?}
  result:=... ;
  else
  result:=EMA(s,kgroup,tmpkline,period);
  end;
-----------------------------------------------


引用时的代码:
-----------------------------------------------
var
  sz399001m1:TKLineGroup;
  pKLine:^TKLine;

implementation
 {...}
  begin
   sz399001m1:= TKLineGroup.Create(self) ;
  {...}
  New(pKLine);
  sz399001m1.KList.Add(pKLine);
  pKLine.DIFs:=EMA(1,sz399001m1,pKLine,12); {!!!!!出错行!!!!!}
  end;
 {...}
-----------------------------------------------

编译时出错:Incompatible types ,怎么会存在类型不匹配呢?怎么解决?万分感谢!!

[解决办法]
pKLine.DIFs是什么类型
[解决办法]
EMA返回single类型, DIFs是什么类型,一致吗
[解决办法]
var
sz399001m1:TKLineGroup;
pKLine:^TKLine;//这行能编译通过吗?类型不匹配的是PKLine跟^TKLine,改成p: PKLine.

然后:
New(p);
sz399001m1.KList.Add(p);
p.DIFs:=EMA(1,sz399001m1,p,12);

热点排行