У меня есть бланк с календарями. При щелчке по календарям они устанавливают переменную CurDateSel
на дату, выбранную в календаре.
У меня есть постоянный массив (неделя), в котором хранятся значения от Monday
[индекс 0] до Sunday
[индекс 6].
У меня также есть StringGrid
, у которого раньше были дни недели, охватывающие верхнюю часть сетки, с воскресенья по понедельник, однако теперь я изменил это, чтобы показать первый столбец сетки как CurDateSel
день (Now
день, когда форма запускается) и следующие столбцы сетки для хранения дней, следующих за выбранным днем.
Например, если выбрана суббота:
Saturday|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday
Затем у меня есть процедура, которая просматривает сохраненный список бронирований и добавляет в сетку бронирования с соответствующими днями и датами. Например, если бронирование было в субботу 23-го в 14:00, процедура перейдет к 14:00 по оси Y и перейдет к 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
Функция возвращает DayNo
в соответствии с фиксированным постоянным массивом массива WEEK
. Таким образом, если в качестве текущего дня выбрать субботу, процедура вернет 5
, а значение CurDayNo
будет = 5
Следовательно, моя ReturnUpdatedDay
процедура должна установить значения моего SelDayArray
на TheCurrentDay
[Index 0]
на TheCurrentDay+6
[Index 6]
Это работает для дня «суббота». Когда я распечатываю список в памятке, я получаю значения: суббота, воскресенье, понедельник ... пятница.
Однако, когда я пробую за несколько дней до субботы, я либо получаю сообщение об ошибке нарушения прав доступа, либо последние два дня списка не сохраняются / не распечатываются. Когда я выбираю воскресенье, я получаю сообщение об ошибке нарушения прав доступа.
Пожалуйста, не могли бы кто-нибудь помочь мне понять, что я делаю не так. Приносим извинения за возможные опечатки или вводящую в заблуждение информацию. Спасибо.