Get the meaning of the ID number

xiaoxiao2021-03-06  40

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.

转载请注明原文地址:https://www.9cbs.com/read-54097.html

New Post(0)