用一个加密狗,他的软件提供如下:
type
  Sense3AutoData = array [0..41] of word;
function WriteMemory0(var p:Sense3AutoData):word;
var
  v0,v1:word;
  i:word;
begin
  pss3 := @ss3;
  p[34] := p[Write_Addr];
  p[11] := p[Write_Data];
  p[25] := p[12];
  p[22] := p[34]-p[11];
  p[7] := p[25]+p[22];
  p[2] := p[34]+p[7];
  p[3] := p[7]+p[2];
  for i := 0 to 7 do
    p[3] := (p[3] shl 1)+(p[3] shr 15);
  p[17] := p[22]-p[3];
  for i := 0 to 0 do
    p[17] := (p[17] shr 1)+(p[17] shl 15);
  p[19] := p[7]-p[3];
  ss3.FunctionCode := InAddr;
  ss3.OutWords := 4;
  ss3.OutBuff[3] := p[19];
  ss3.OutBuff[2] := p[3];
  ss3.OutBuff[1] := WriMemAddr;
  ss3.OutBuff[0] := p[17];
  SENSE3(ss3);
  if (ss3.ReturnFlag >= $80) then 
    WriteMemory0 := ss3.ReturnFlag
  else
  begin
  p[10] := ss3.InBuff[3];
  p[25] := ss3.InBuff[2];
  p[22] := ss3.InBuff[0];
  p[16] := p[25]-p[22];
  p[18] := p[10]+p[16];
  p[2] := p[25]+p[18];
  p[22] := p[18]+p[2];
  for i := 0 to 7 do
    p[22] := (p[22] shl 1)+(p[22] shr 15);
  p[17] := p[16]-p[22];
  for i := 0 to 0 do
    p[17] := (p[17] shr 1)+(p[17] shl 15);
  p[34] := p[18]-p[22];
  v0 := p[17];
  p[35] := p[22];
  p[Write_Addr] := p[34];
  p[Write_Data] := v0;
  WriteMemory0 := ss3.ReturnFlag;
  end;
end;如上函数
我想通过写语句分别将一串字符串与当前日期写入狗,如何写function WriteMemory0(var p:Sense3AutoData):这个语句啊,老是报形参与实参不一致

解决方案 »

  1.   

    定义一个Sense3AutoData 
    然后把字符串的内容复制到定义个变量里面
    再调用函数
      

  2.   

    定义一个Sense3AutoData 
    然后定义变量 mydata:Sense3AutoData 
    mydata[0]=1;
    writememory0(mydata);
    还是出错形参与实参不一致啊
      

  3.   

    writememory0(mydata);
    这句报错?
    不可哦WriteMemory0是不是还有其他声明?
      

  4.   

    没有了,报types of acual and formal var parameters must be identical
    WriteMemory0整个函数体都贴出来了啊
      

  5.   

    没有报任何的信息,LZ还是再检测一下其他的地方吧
      aPs: Sense3AutoData;
    begin
      aps[0] := 1;
      WriteMemory0(aps);
      

  6.   

    如果是
    writememory0(mydata);
    这句编译错误 只要函数声明函数体里面有什么没关系 没有都可以
      

  7.   

    如果是函数里面报错  那你就指出是函数体里面哪句函数里面只有
    SENSE3
    这句是函数调用了
      

  8.   

    行了,谢了,不过返回的是word,我定了一个word:=WriteMemory0(aps);
    但是无法在调试中得到值,如何做才能看到值
      

  9.   

    编译选项里面去掉代码优化你定义一个word 如果不是用 默认会被优化掉