Mam taki kod obliczający ile dni ma baza pobrana do własnego programu. Tak jak w programach antywirusowych.
{ Podliczenie na podstawie daty bazy - jej wieku}
function DzienRoku: Extended;
var
D1,D2:TDateTime;
begin
D1:=StrToDate(SearchForm.Sygnatura_Data.Caption);
D2:=StrToDate(FormatDateTime('yyyy-mm-dd', Now));
result:=(D2-D1);
end;
// SearchForm.Sygnatura_Data.Caption jest równy 2005-03-02
//FormCreate
{...}
try
begin
if DzienRoku = 0 then RoznicaDat.Caption := '>> Aktualna: pobrana dzisiaj'
else
if DzienRoku = 1 then RoznicaDat.Caption := '>> Aktualna: pobrana wczoraj'
else
if ((DzienRoku > 1) and (DzienRoku < 31)) then RoznicaDat.Caption := '>> Aktualna: pobrana ' + FloatToStr(DzienRoku) + ' dni temu'
else
if DzienRoku > 30 then RoznicaDat.Caption := '>> Nie aktualna !: pobrana ' + FloatToStr(DzienRoku) + ' dni temu';
// informacja dla użytkownika jeśli bazy mają więcej niż zadeklarował użytkownik
if ((CheckBoxUpdate.Checked = True) and (DzienRoku >= strtoint(EditWiekBazy.Text))) then
begin
SearchForm.PageControl1.TabIndex := 6;
ShowMessage('Wykorzystywane sygnatury opublikowano ' + FloatToStr(DzienRoku) + ' dni temu !' +#10+
'Zostanie teraz sprawdzone, czy jest nowsza baza, ponieważ wymaga ona aktualizacji.');
Application.ProcessMessages;
{...}
end;
end;
except
// błąd pobrania daty
end;
{...}
Wszystko działa dobrze w XP. Ale w 98 lub Me występuje taki błąd:
2005-03-02 is not a valid date.
O co w tym chodzi ? Gdzie jest błąd ? Czy systemy 9x pobierają inaczej date od XP. Pomocy !