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';
}
{
int i,len;
long count=0;
len=strlen((char *)buffer);
for (i=0;i<len;i++)
count+=buffer[i];
buffer[len]=count%16L+'0';
}
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!!
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];
有错..
count := longint(char(count) + buffer[i]);因为你的声明的形参为buffer: array of char
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;