【发布时间】:2013-02-19 16:56:29
【问题描述】:
我有一张带有日历的表格。单击日历时,他们将变量CurDateSel 设置为日历上选择的日期。
我有一个常量数组(周),其中存储了 Monday [Index 0] 到 Sunday [Index 6] 的值。
我还有一个 StringGrid ,它过去一周中的日期跨越网格的顶部,从星期日到星期一,但是,我现在已将其更改为将网格的第一列显示为CurDateSel 天(表单开始时的Now 天)和以下网格列用于存储所选日期之后的天数。
例如,如果选择了星期六:
Saturday|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday
然后我有一个过程,它遍历存储的预订列表,并将具有相应日期和日期的预订添加到网格中。例如,如果预订是在 23 日星期六下午 2 点进行的,则程序将在 y 轴上转到下午 2 点,然后转到轴上的第 5 列,因为这对应于星期六,在我的数组 WEEK 中。
但是,由于我的列现在根据当天更改,存储的预订值不会转到相应的日期,而是转到通常存储日期的列,如果列从星期一开始并在星期日结束。
我决定创建一个新数组来存储一周的值,其中一周的开始是当天,一周的结束是当天 + 6 天。我称这个数组为SelDayArray。
例如,如果是星期六,则此数组将从 Index[0] = Saturday 开始并以 Index[6] = Friday 结束。
我试图编写代码来填充第二个数组,但是我似乎无法正确填充它。
procedure ReturnUpdatedDay;
var
i, x, p, CurDayNo: Integer;
begin
i := 0;
CurDayNo := ReturnDayCell(FormatDateTime('dddd', CurDateSel));
repeat
SelDayArray[i] := Week[CurDayNo+i];
Inc(i);
until (CurDayNo + i) = 7;
Dec(i);
p := i;
for x := 0 to (CurDayNo-p) do
begin
Inc(i);
SelDayArray[i] := Week[x];
end;
end;
我的ReturnDayCell函数根据数组WEEK的一个固定常量数组返回DayNo。因此,如果选择星期六作为当前日期,该过程将返回 5,CurDayNo 的值将返回 = 5
因此,我的ReturnUpdatedDay 过程应该将我的SelDayArray 的值设置为TheCurrentDay [Index 0] 到TheCurrentDay+6 [Index 6]
这适用于“星期六”这一天。 当我将列表打印到备忘录中时,我会收到以下值:周六、周日、周一……周五。
但是,当我在星期六前几天尝试时,要么收到访问冲突错误,要么未存储/打印列表的最后两天。当我选择星期日时,我收到访问冲突错误。
请有人帮我看看我做错了什么。对于任何拼写错误或令人困惑的信息,我们深表歉意。谢谢。
【问题讨论】:
标签: arrays delphi date procedure schedule