GPT实现的企业信用代码校验函数

发布时间 2023-11-24 11:20:34作者: 红鱼儿
function ValidateEnterpriseCode(EnterpriseCode: string): Boolean;
var
  i, sum, code, weight: Integer;
begin
  Result := False;
  
  // 企业信用代码长度校验
  if Length(EnterpriseCode) <> 18 then
    Exit;
    
  // 企业信用代码权重因子
  const factor: array[1..17] of Integer = (1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28);
  
  // 计算企业信用代码前17位的加权和
  sum := 0;
  for i := 1 to 17 do
  begin
    code := Ord(EnterpriseCode[i]) - Ord('0');
    weight := factor[i];
    sum := sum + code * weight;
  end;
  
  // 计算校验码
  code := 31 - sum mod 31;
  
  // 校验企业信用代码最后一位校验码
  if code = 31 then
    code := 0;
    
  if code <> Ord(EnterpriseCode[18]) - Ord('0') then
    Exit;
    
  Result := True;
end;