【问题标题】:Delphi Week Array Storage Issue for Scheduling SystemDelphi Week 调度系统的数组存储问题
【发布时间】: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。因此,如果选择星期六作为当前日期,该过程将返回 5CurDayNo 的值将返回 = 5

因此,我的ReturnUpdatedDay 过程应该将我的SelDayArray 的值设置为TheCurrentDay [Index 0]TheCurrentDay+6 [Index 6]

这适用于“星期六”这一天。 当我将列表打印到备忘录中时,我会收到以下值:周六、周日、周一……周五。

但是,当我在星期六前几天尝试时,要么收到访问冲突错误,要么未存储/打印列表的最后两天。当我选择星期日时,我收到访问冲突错误。

请有人帮我看看我做错了什么。对于任何拼写错误或令人困惑的信息,我们深表歉意。谢谢。

【问题讨论】:

    标签: arrays delphi date procedure schedule


    【解决方案1】:

    mod 运算符允许您以循环方式访问周向量,在第 6 个元素之后回退到 0。

    将您的代码更改为:

    procedure ReturnUpdatedDay;  
     var  
      I, CurDayNo: Integer;  
    begin  
      CurDayNo := ReturnDayCell(FormatDateTime('dddd', CurDateSel));  
      for I := 0 to 6 do
        SelDayArray[I] := Week[(CurDayNo + I) mod 7];  
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多