У вас, похоже, бесконечная рекурсия, которая приведет к переполнению стека (насколько уместно задавать этот вопрос здесь).
Вместо этого вы могли бы написать:
function TForm1.Now: TDateTime;
var
dzien, miesiac, rok: Word;
godzina, minuta, sekunda, milisekunda: Word;
begin
Result := SysUtils.Now;
SysUtils.DecodeDate(Result, rok, miesiac, dzien);
DecodeTime(Result, godzina, minuta, sekunda, milisekunda);
MessageBox(0,PChar(Format('Data: %d/%d/%d %d:%d:%d:%d',[rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda])), 'Data', MB_ICONINFORMATION);
end;
Мне пришлось полностью квалифицировать Now и DecodeDate, потому что вы используете те же имена в своем коде. Вы не должны этого делать и должны выбирать не конфликтующие имена
Я не совсем понимаю ваши цели, и в этом коде явно много других проблем.
Следуйте за комментарием другого ответа. Я запустил следующую программу:
program Project1;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
procedure Main;
var
dt: TDateTime;
dzien, miesiac, rok: Word;
godzina, minuta, sekunda, milisekunda: Word;
begin
dt := Now;
DecodeDate(dt, rok, miesiac, dzien);
DecodeTime(dt, godzina, minuta, sekunda, milisekunda);
MessageBox(
0,
PChar(Format(
'Data: %d/%d/%d %d:%d:%d:%d',
[rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda])
),
'Data',
MB_ICONINFORMATION
);
end;
begin
Main;
end.
пока приводил к такому выводу:
Если ваш звонок по Now
и DecodeDate
действительно приведет к 2002 году, тогда я могу только заключить, что время на вашем компьютере неправильное!