AddParityChar(BYTE *buffer)
   {
int i,len;
long  count=0;
len=strlen((char *)buffer);
for (i=0;i<len;i++)
count+=buffer[i];
buffer[len]=count%16L+'0';
}

解决方案 »

  1.   

    procedure AddParityChar(buffer:^byte);
    var
      i,len: integer;
      count: Longint;
    begin
      count := 0;
      len :=strlen(Pchar(buffer));
      for i := 0 to i<len do
      begin
        count := count +buffer[i];
        i := i+1;
      end;
      buffer[len]=format('%16L', count) +'0';
    end;OK!!
      

  2.   

    AddParityChar(buffer:^byte)我直接给个char数组是不是更好??
      

  3.   

    procedure TForm1.AddParityChar(var buffer: array of char);
    var i, len: Integer;
      count: Longint;
    begin
      count := 0;
      len := StrLen(buffer);
      for i:=0 to len do
       begin
        count := count + buffer[i];
        i:=i+1;
       end;
        buffer[len]=format('%16L', count) +'0';end;但是count := count + buffer[i];
    有错..
      

  4.   

    应该为
     count := longint(char(count) + buffer[i]);因为你的声明的形参为buffer: array of char
      

  5.   

    var buffer:^byte;
    procedure TForm1.ddParityChar;
    var
      i,len: integer;
      count: Longint;
    begin
      count := 0;
      len :=strlen(Pchar(buffer));
      for i := 0 to len-1 do
      begin
        if i<>0 then
           buffer^:=buffer^+1;
        count := count+buffer^;
      end;
      buffer^:=integer(formatfloat('%16L',count));
    end;