SendBuff : Array[1..MAX_BUFF] of char;
  MS : TMemoryStream;
  vb : byte;
  vi : integer;
  str : Array[1..MAX_BUFF] of char;
  s : string;
  passlen : string;
function TForm1.creatConnection():boolean;   //初始化,先登陆
var
 ReceivedString,sVIP: String;
 i ,sPort:integer;
 sbuff:pchar;
 ServerBuff : Array[1..MAX_BUFF] of byte;
begin
  result := False;
  ZeroSBuff();
  MS.Clear;
  vb := $01;  // STX
  MS.Write(i, 1);
  vb := $1F;  //  CLERKLOGIN
  MS.Write(i, 1);
  s := NODE;  //NODE
  strlcopy(@(str[1]), pchar(s), length(s));
  MS.Write(str, 6);
  s := CLERK;    //CLERK
  strlcopy(@(str[1]), pchar(s), length(s));
  MS.Write(str, 5);
  passlen := Format('%.2d', [Length(PASSCODE)]);
  strlcopy(@(str[1]), pchar(passlen), length(s));
  MS.Write(str, 2);
  s := PASSCODE;
  strlcopy(@(str[1]), pchar(s), length(s));
  MS.Write(str, length(s));
  vb := $02; //ETX;
  MS.Write(i, 1);  i := MS.Position;
  MS.Position := 0;
  MS.Read(SendBuff, i);//CRC校验添加到包尾
  AddParityChar(SendBuff);//这里这样写对吗????
             //还是传MS,具体完整的CRC函数该怎么改??
//-------------------------------------------------------UDPClient1.SendBuffer(SendBuff,i+1);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-1 do
  begin
     count := count + length(buffer[i]);
  end;
    StrPCopy(pchar(buffer[len]), format('%16l', [count]) +'0');end;///-----------------------------------------------------
原CRC校验Demo(C语言)
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';
}