用一个加密狗,他的软件提供如下:
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.   

    Sense3 = array [0..41] of word;你能只提供Word型的数组.
    比喻日期你要用 2006-06-29var
      Sense3: TSense3AutoData;
      Value: word;
    begin
      Sense3[0] := 2006;
      Sense3[1] := 6;
      Senes3[2] := 29;
      value := WriteMemory0(@Sens3);
    end;
      

  2.   

    小弟提供二种方法:
    1、
     type t1=record 
      case integer of 
      0: (Sense3AutoData : array [0..41] of word) ;
      1: (dt: tdatetime);
      2: (p:array[0..83] of char);
     end;var v:t1;
    赋值: v.dt=now;
    调用:WriteMemory0(v.Sense3AutoData);
    2、
    type pSense3AutoData=^Sense3AutoData;d=now;
    WriteMemory0(pSense3AutoData(addr(d))^);p:='abcdefg';
    WriteMemory0(pSense3AutoData(p)^);