|
Тема |
Re: ПОМОЩ СПЕШНО [re: vasko] |
|
Автор |
andrew_nikoloff (bugbuster) |
|
Публикувано | 23.02.06 11:50 |
|
|
Шом това ти е трудно да направиш - явно програмирането не ти е силна страна (поне засега) и не трябва да се захващаш с такива спешни задачки без човек до себе си, дето да ти помага. Но ето ти едно решение:
Сложи си на една форма пет TEdit контрола и ги кръсти съответно eEGN, eYear, eMonth, eDate и eOlderThan60. Във формата си напиши по-долната процедура и напиши следващият я код в събитието OnChange на eEGN полето.
function ParseEGN(const EGN: String; var Y, M, D: Word; var OlderThan60: Boolean): Boolean;
var
BirthDay: TDate;
Y2, M2, D2: Word;
idx: Integer;
begin
Result := False;
if Length(EGN) < 6 then //Няма ги въведени още необходимите цифри
Exit;
for idx := 1 to Length(EGN) do
if not (EGN[idx] in ['0'..'9']) then //В ЕГН може да има само цифри
Exit;
try
Y := StrToInt(Copy(EGN, 1, 2));
M := StrToInt(Copy(EGN, 3, 2));
D := StrToInt(Copy(EGN, 5, 2));
if M > 40 then //Роден след 2000 г.
begin
Y := Y + 2000;
M := M - 40;
end
else if M > 20 then //Роден преди 1900 г.
begin
Y := Y + 1800;
M := M - 20;
end
else //Роден между 1900 и 2000 г.
Y := Y + 1900;
BirthDay := EncodeDate(Y, M, D);
DecodeDate(Date, Y2, M2, D2);
OlderThan60 := ((Y2 - Y) > 60) or
(((Y2 - Y) = 60) and ((M2 > M) or ((M2 = M) and (D2 > D))));
Result := True;
except
Result := False; //Грешка. Вероятно невалидна дата
end;
end;
procedure TForm1.eEGNChange(Sender: TObject);
var
Y, M, D: Word;
OlderThan60: Boolean;
begin
if ParseEGN(eEGN.Text, Y, M, D, OlderThan60) then
begin
eYear.Text := IntToStr(Y);
eMonth.Text := IntToStr(M);
eDay.Text := IntToStr(D);
if OlderThan60 then eOlderThan60.Text := 'Над 60 г.' else eOlderThan60.Text := 'Под 60 г.';
end
else
begin
eYear.Clear;
eMonth.Clear;
eDay.Clear;
eOlderThan60.Clear;
end;
end;
Писал съм кода директно тук, така че може да съм допуснал някоя синтактична грешка, но това ще трябва да можеш и сам да си го оправиш. Също така си погледни проверката за възръстта на човека да не съм я объркал нещо...
|
| |
|
|
|