Непонятная ошибка Argument out of range
T1List := TM_Int64List.Create;
T2List := TM_Int64List.Create;
pT1List:= TM_Int64List.Create;
pT2List:= TM_Int64List.Create;
списки с хранением времени в UNIX? жалуется на 1 строку
IF (T1List.Count = pT1List.Count) AND (pT2List.Last <> DateTimeToUnix(Prostoy_time_now_2.Value)) then
begin
pT1List.Add(T2List.Last+1);
pT2List.Add(DateTimeToUnix(Prostoy_time_now_2.Value));
end;
Здравствуйте.
Всё верно, у вас есть пустой список и Вы пытаетесь получить несуществующий последний элемент списка (когда последнего нет). Добавьте проверку на количество элементов:
if pT2List.Count > 0 then
if (T1List.Count = pT1List.Count) AND (pT2List.Last <> DateTimeToUnix(Prostoy_time_now_2.Value)) then
begin
pT1List.Add(T2List.Last+1);
pT2List.Add(DateTimeToUnix(Prostoy_time_now_2.Value));
end;
Также не забудьте удалить все объекты, созданные через ".Create" после использования (FreeAndNil(T1List) и т.д.), чтобы выделенная для них память освободилась.
Классы TM_List и TM_Int64List используют стандартный TList и TList<Int64> из Delphi и их методы, без изменений в именах. Исключения также берутся из стандартной реализации. Насколько нам известно, Last это часто используемый вариант имени для списков, например в C# метод тоже называется Last и даёт исключение, если в списке нет элементов, что логично (если нет элементов, значит нет и последнего).
List<long> list = new List<long>();
if (list.Last() > 0)
{
}