Ik moest ff wakker worden, maar ik denk dat ik de oplossing nu heb. Misschien heb ik een beetje moeilijk gedaan met een classe maken maar dat maakt het wel wat overzichtelijker.
de classe ziet er zo uit:
Code:
type
TVageDateTime = class
Private
fMinutes: integer;
Public
constructor Create(const DateTime: TDateTime); overload;
constructor Create(const DayOfTheWeek, Hour, Minute: integer); overload;
function MinutesBefore(const DateTime: TDateTime): integer;
Published
property Minutes: integer read fMinutes write fMinutes;
End;
implementation
constructor TVageDateTime.Create(const DateTime: TDateTime);
begin
fMinutes :=
((DayOfTheWeek(DateTime) - 1) * 24 * 60) +
((HourOf(DateTime) * 60) +
MinuteOf(DateTime)
;
end;
constructor TVageDateTime.Create(const DayOfTheWeek, Hour, Minute: integer);
begin
fMinutes :=
(DayOfTheWeek - 1) * 24 * 60) +
(Hour * 60) +
Minute
;
end;
function TVageDateTime.MinutesBefore(const DateTime: TVageDateTime): integer;
begin
result := DateTime.Minutes - fMinutes
if result < 0 then
inc(result, 7*24*60); // Tell er een week bij op.
end;
---------
En dit wordt dan jou uiteindelijke functie
Code:
var
CurrentTime, EventTime: TVageDateTime;
MinutesBetween: integer;
begin
Result := False;
CurrentTime := TVageDateTime.Create(Now);
EventTime := TVageDateTime.Create(FDay, FHour, FMinute);
MinutesBetween := CurrentTime.MinutesBefore(EventTime);
if (MinutesBetween >= 0) and (MinutesBetween < 60) then
result := true
else
result := false;
CurrentTime.Destroy;
EventTime.Destroy;
end;
Ik heb dit zo net ff uit mijn mouw geschudt dus het zou goed kunnen dat er het een en het ander aan bugs in zit. Het princiepe zou goed moeten zijn. De klasse vertaald Dag, uur en minuut in een aantal minuten. Het maximale aantal minuten is precies (het aantal minuten in een week - 1). Welke maand, jaar of wat het dan ook is is voor deze functie onbelangrijk.
Ik hoop dat dit is wat je zoekt.
Originally Posted by
NGLN
Welkom op het forum trouwens !
bedankt
Bookmarks