算法部分:
procedure TfrmMain.btnCheckClick(Sender: TObject);
var
strName,strSerial :string;
nameLen,serialLen,i,nTemp :integer;
label wrong;
begin
strName := edtname.Text ;
nameLen := length(strName);
//如果name长度小于2就算错
if nameLen < 2 then
goto wrong;
strSerial := edtSerial.Text;
serialLen := length(strSerial);
//如果sn长度不等于10则算出错
if serialLen <> 10 then
goto wrong;
for i:=1 to serialLen do
begin
if (strSerial[i]<'0') or (strSerial[i]>'9') then
goto wrong;
end;
if Ord(strSerial[1]) + Ord(strSerial[6]) <> 109 then
goto wrong;
if Ord(strSerial[2]) + Ord(strSerial[7]) <> 103 then
goto wrong;
if Ord(strSerial[3]) + Ord(strSerial[8]) <> 105 then
goto wrong;
if Ord(strSerial[4]) + Ord(strSerial[9]) <> 112 then
goto wrong;
if Ord(strSerial[5]) * Ord(strSerial[10]) <> 2700 then
goto wrong;