Daty ?!

0

Witam wszystkich.
Mam takie pytanie jak sprawdzić czy wskazana data znajduje sie w przydziale od-do, mam np. date urodzin chcĘ sprawdzić czy ten ktoś mieści się w przedziale od xx.xx.xxxx do xx.xx.xxxx. Starałem się to zrobić przy pomocy DecodeDate i porównywać lata, m-c i dni ale dostaje komunikat "incopatible types" a obydwie zmienne to Word. Czy ktoś może zna rozwiązanie?

0

Zakoduj wszystko jako TDateTime i porownuj wartosci TDateTime za pomocą > i <

0

albo tak ...

int isbetween(inr d1,int m1,int y2,int d2,int m2,int y2,int d,int m,int y){
  unsigned long a=(unsigned long)((y<<9)|(m<<5)|d);
  return (a<=(unsigned long)((y2<<9)|(m2<<5)|d1))&(a>=(unsigned long)((y1<<9)|(m1<<5)|d1));
}
function isbetween(d1,m1,y1,d2,m2,y2,d,m,y:word)boolean;
var a:dword;
begin
  a:=dword((y shl 9)or(m shl 5)or d);
  isbetween:=(a<=dword((y2 shl 9)or(m2 shl 5)or d2)and(a>=dword((y1 shl 9)or(m1 shl 5)or d1);
end;

Jako 1 jest dolna granica, 2 gorna, a bez cyferek data aktualna.
dzień to max 31 (wiec 5 bitow wystarczy 32 mozliwosci) miesiący jest 12 (dla uproszczenia dajmy 16 mizliwosci - 4 bity) i lata jako nabardziej znaczące. Przesunięcia bitowe sa jednymi z szybszych operacji.

Sam juz nie wiem jaki to dział i o jaki jezyk sie pytasz

0

Można by funkcją copy zrobić z Daty xx.xx.xxxx jeden ciąg : xxxxxxxx i wtedy porównać czy data mieści się w przedziale

0

Dzięki wszystkim za odpowiedź, działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1