Unit unit1;
Interface
Uses
Windows, Messages, Sysutils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Stdctrls, Comctrls, Extctrls, Grids
Type
TFORM1 = Class (TFORM)
Button1: tbutton;
EDIT1: TEDIT;
Procedure Button1Click (Sender: TOBJECT);
Private
protected
{Private Declarations}
public
{Public declarations}
END;
VAR
FORM1: TFORM1;
IMPLEMENTATION
{$ R * .dfm}
Uses math;
Const
CCITYCODE: ARRAY [0..91] of string =
'', '', '', '', '', '', '', '', ',' ',' ',
'Beijing', 'Tianjin', 'Hebei', 'Shanxi', 'Inner Mongolia', '', '', '', ',' ',
'Liaoning', 'Jilin', 'Heilongjiang', '', '', '', '', '', '', '',
'Shanghai', 'Jiangsu', 'Zhejiang', 'Anwei', 'Fujian', 'Jiangxi', 'Shandong', '', '', '',
'Henan', 'Hubei', 'Hunan', 'Guangdong', 'Guangxi', 'Hainan', '', ',' ',
'Chongqing', 'Sichuan', 'Guizhou', 'Yunnan', 'Tibet', '', '', '', '', '', '',
'Shaanxi', 'Gansu', 'Qinghai', 'Ningxia', 'Xinjiang', '', '', '', '', '',
'Taiwan','','','','','','','','','',
'Hong Kong and Macao','','','','','','','','',
'foreign');
Function CheckCIDINFO (McIDCode: String): String;
VAR
SET OF CHAR;
I: integer;
VDATETIME: TDATETIME;
T: double;
Begin
If Length (Mcidcode) <> 18 THEN
Begin
Result: = '# Coding must be 18 bits'; exit;
END;
S: = [];
For i: = 1 to 17 do include (s, mcidcode [i]);
IF S - ['0' .. '9'] <> [].
Begin
Result: = '# The first 17 bits of encoding must be a number';
EXIT;
END;
IF not (McIDCode [18] in ['0'. '9', 'x', 'x']) THEN
Begin
Result: = '# The last bit must be a number or x';
EXIT;
END;
I: = STRTOINTDEF (Copy (McIDCode, 1, 2), 0);
IF (i> high (ccitycode)) or (ccitycode [i] = '') THEN
Begin
Result: = '# The address code is incorrect';
EXIT;
END;
Result: = 'Region:' CCITYCODE [I];
IF not trystodate (Copy (McIDCode, 7, 4) '-'
Copy (McIDCode, 11, 2) '-' Copy (McIDCode, 13, 2), vdatetime) THEN
Begin
Result: = '#Natabases incorrect' Copy (Mcidcode, 7, 4) '-'
Copy (McIDCode, 11, 2) '-' Copy (McIDCode, 13, 2);
EXIT;
END;
IF (vdatetime> date) or (VDATETIME Begin Result: = '# birthday does not meet the logic'; EXIT; END; Result: = Result 'birthday:' formatdatetime ('YYYY-MM-DD', VDATETIME); IF mcidcode [18] in ['x', 'x'] Then Mcidcode [18]: = 'a'; T: = 0; For i: = 18 DOWNTO 1 DO T: = T Trunc (Power (2, I -1)) MOD 11 * STRTOINT ('$' MCIDCode [19- I]); IF Trunc (T) MOD 11 <> 1 THEN Begin Result: = '# illegal check code' INTTOSTR (Trunc (T) MOD 11); EXIT; END; Result: = Result 'Gender:' Copy (WideString ('Men'), ORD (ORD (Mcidcode [17]) MOD 2 = 0) 1, 1); End; {checkcidinfo} Procedure TFORM1.BUTTON1CLICK (Sender: TOBJECT); Begin Caption: = CheckcidInfo (Edit1.Text); END; End.