在Array上标题为13个月

时间:2018-01-04 10:08:47

标签: arrays pascal

我想知道是否有人可以帮助我,为什么以下代码的标题在13个月内没有正确创建它们。我想将git reset --hard <my_hash_of_last_commit_on_remote_branch> ActivityRecord not found ......添加到Jan(LY)

请参阅下面的标题代码,

Feb(LY)

1 个答案:

答案 0 :(得分:2)

我可以先建议您将月份名称数组更改为常量:

const
  MonthNames: array[1..12] of string = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

接下来我建议进行一些更改,以避免13个月的硬编码时间跨度,因为正如您现在所经历的那样,需求会发生变化,硬编码的东西总是比变量更难改变。

声明一个变量,例如MonthSpan: integer表示应该包括多少个月(将来可能会有3个月,6个月等替代时间跨度的新要求)。同时使用名为Heading1, Heading2 ...的动态数组替换所有Headings变量:

Monthspan: integer;
Headings: array of string;

现在我只是在开头初始化

Monthspan := 13;
SetLength(Headings, Monthspan);

您之前已经计算过StartDate: TDate所以使用它和现有变量M我们现在可以编写一个简单的循环来获取标题:

M := MonthOf(StartDate);
for i := 0 to MonthSpan-1 do
begin
  Headings[i] := MonthNames[(M + i) mod 12];
  Memo1.Lines.Add(Headings[i]);
end;

MonthOf()是单位System.DateUtils中的一项功能。

以上内容会替换Function MonthCalc()以及//Headings评论下方的所有代码。在您的代码的其他地方,您使用过的地方,例如Heading1你现在使用标题[0](动态数组总是从0开始索引)等。

我不确定HArray[]的目的是什么,但不需要确定标题。