az li sam tap

0 отговора 0 прегледа
#1

az li sam tap

function TForm1.EGN_OLD(s: String): Boolean;
var
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,suma,meseca, ostatak, god, posledno: Integer;
egn :String;
data1,mesec1,godina,d : String;
alldata1: TDateTime;
begin
ShortDateFormat := 'dd/mm/yyyy';
DateSeparator := '/';

egn :=Edit1.Text;
a1 := strtoint(Copy(egn,1,1));
a2 := strtoint(Copy(egn,2,1));
a3 := strtoint(Copy(egn,3,1));
a4 := strtoint(Copy(egn,4,1));
a5 := strtoint(Copy(egn,5,1));
a6 := strtoint(Copy(egn,6,1));
a7 := strtoint(Copy(egn,7,1));
a8 := strtoint(Copy(egn,8,1));
a9 := strtoint(Copy(egn,9,1));
posledno := strtoint(Copy(egn,10,1));

godina := (Copy(egn,1,1))+(Copy(egn,2,1));
god := strtoint(godina);




if god <=05 then begin
god := god+2000; //0542040458 7406069151 7911044644
end
else begin
god := god+1900;
end;

Label2.Caption := '&#195;&#238;&#228;&#232;&#237;&#224; &#237;&#224; &#240;&#224;&#230;&#228;&#224;&#237;&#229;:'+ IntToStr(god);

{
if ((god > 2005) AND (god < 1900)) then begin
ShowMessage('&#195;&#240;&#229;&#248;&#237;&#224; &#227;&#238;&#228;&#232;&#237;&#224;');
Exit;
end;
}


{
a10:= strtoint(Copy(egn,10,1));


godina := Copy(egn,1,2);
mesec1 := Copy(egn,3,2);
meseca := strtoint(Copy(egn,3,2));
data1 := Copy(egn,5,2);
d := data1+'/'+mesec1+'/'+'19'+godina;
alldata1 := StrToDate(d);

if alldata1 < strtodate('01/01/1900') then begin
meseca := meseca+20
end;


if alldata1 > strtodate('31/12/1999') then begin
meseca := meseca+40
end;

if ((a9 = 2) or (a9 = 4)) or
((a9 = 6) or (a9 = 8)) or
(a9 = 0) then begin
ShowMessage('maj');
end;

if ((a9 = 1) or (a9 = 3)) or
((a9 = 5) or (a9 = 7)) or
(a9 = 9) then begin
ShowMessage('jena');
end;

}



//strtodate(d); + meseca
// true (&#232;&#241;&#242;&#232;&#237;&#224; - 1) &#232;&#235;&#232; false (&#235;&#250;&#230;&#224; - 0), &#226; &#231;&#224;


// &#237;&#238;&#236;&#229;&#240; &#237;&#224; &#239;&#238;&#231;&#232;&#246;&#232;&#255;&#242;&#224; &#226; &#197;&#195;&#205; 1 2 3 4 5 6 7 8 9
// &#243;&#236;&#237;&#238;&#230;&#229;&#237;&#232;&#229; * * * * * * * * *
// &#242;&#229;&#227;&#235;&#224; 2 4 8 5 10 9 7 3 6





suma := ((a1*2)+(a2*4)+(a3*8)+(a4*5)+(a5*10)+(a6*9)+(a7*7)+(a8*3)+(a9*6));
Label1.Caption := '&#209;&#243;&#236;&#224;:'+ inttostr(suma);

if god < 1900 then begin
suma := (a1*2)+(a2*4)+((a3*8)+20)+((a4*5))+(a5*10)+(a6*9)+(a7*7)+(a8*3)+(a9*6);
Label1.Caption := '&#209;&#243;&#236;&#224;:'+ inttostr(suma) + ' &#194;&#235;&#232;&#231;&#224; &#226; &#243;&#241;&#235;&#238;&#226;&#232;&#229;&#242;&#238;';
end;
if god > 2000 then begin
suma := (a1*2)+(a2*4)+((a3*8)+40)+((a4*5))+(a5*10)+(a6*9)+(a7*7)+(a8*3)+(a9*6);
Label1.Caption := '&#209;&#243;&#236;&#224;:'+ inttostr(suma) + ' &#194;&#235;&#232;&#231;&#224; &#226; &#243;&#241;&#235;&#238;&#226;&#232;&#229;&#242;&#238;';
end;

ostatak := suma mod 11;

Label3.Caption := '&#206;&#241;&#242;&#224;&#250;&#234;: '+ inttostr(ostatak);
//ShowMessage('&#238;&#241;&#242;&#224;&#242;&#250;&#234; e:'+ inttostr(ostatak));

if ostatak < 10 then begin
a10 := ostatak; //(&#232;&#241;&#242;&#232;&#237;&#224; - 1)
ShowMessage('&#194;&#255;&#240;&#237;&#238; &#197;&#195;&#205; ');
Result := True;
end;

if ostatak = 10 then begin
a10 := 0; // (&#235;&#250;&#230;&#224; - 0)
ShowMessage('&#195;&#240;&#229;&#248;&#237;&#238; &#197;&#195;&#205;');
Result := False;
end;


{
if a10 = 0 then begin
ShowMessage('&#195;&#240;&#229;&#248;&#237;&#238; &#197;&#195;&#205;');
Result := False;
end
else begin
ShowMessage(' &#194;&#255;&#240;&#237;&#238; &#197;&#195;&#205;');
Result := True;
end;
}

{
if a10 <> 0 then begin
ShowMessage('&#194;&#255;&#240;&#237;&#238; &#197;&#195;&#205; ');
Result := True;
end
else begin
ShowMessage('&#195;&#240;&#229;&#248;&#237;&#238; &#197;&#195;&#205;');
Result := False;
end;
}
end;






Единният Граждански Номер (ЕГН) се състои от 10 цифри. В първите 6 цифри е кодирана датата на раждане, следващите 3 са поредност на раждането - число от 000 до 999, а десетата цифра е контролна. Предпоследната цифра (на позиция 9) отразява и пола на притежателя на конкретния ЕГН. За мъже тя е четно число, а за жени - нечетно.

ЕГН
номер на позицията в ЕГН 1 2 3 4 5 6 7 8 9
умножение * * * * * * * * *
тегла 2 4 8 5 10 9 7 3 6
7 0 0 5 0 6 1 1 0 0
Алгоритъм за изчисляване на контролната цифра:
Умножават се стойностите от всяка позиция със съответното число, посочено под номера на позицията.
Сумират се получените произведения.
Получената сума се дели на 11.
Ако полученият остатък от деленето е число по-малко от 10, то става контролно число. Ако е равно на 10, контролното число е 0.
Начин за кодиране датата на раждане в ЕГН:
На позиции 1 и 2 се поставят последните две цифри от годината на раждане.
На позиции 3 и 4 стои месецът на раждане, като към него е прибавено:
20 /за родените до 01.01.1900 г./
0 /за родените от 01.01.1900 г. до 01.01.2000 г./
40 /за 2000г. и следващите години/
На позиции 5 и 6 се записва деня на раждане.

[линк]

Отговор