Я использовал TList на основе generic -ов, https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.Generics.Collections.TList В качестве типа использую запись величина-время...
С кинь код и файл в архиве на проверку.
Сегодня более тщательно посмотрел код, оказалось что TList и динамические массивы не виноваты - память заканчивалась при отрисовке каналов на графике, а точнее ошибка возникала при вызове функции Realloc из System. Причем что интересно под отладчиком все работало. Проблему решил при помощи стороннего менеджера памяти, скачанного с GitHub - FastMM, у него в наличии была директива для увеличения доступной памяти 32 разрядного приложения до 3 ГБ. Вообщем все заработало, получилось парсить и выводить графики для файла 100 МБ. Ссылка на FastMM: https://github.com/apz28/Delphi-fastmm4m
Много памяти выжирает всё равно. Будет файл побольше - и вам кирдык.
У меня стояла задача поработать с файлом 100МБ. Большие файлы смотреть - это уже надо использовать отображение файла на память и использовать более сложный алгоритм. Вообще, планирую выйти на файлы гигабайтного размера, но этим будет заниматься фронтend программист. Я больше по микроконтроллерами.
Я старой закалки. 20 лет назад такие задачи вызывали интерес. Это возможность принять профессиональный вызов.
На всяк случай средствами фмм посмотри статистику управляемой им кучи - фмм подскажет сколько он в реальности аллокировал, каков верхед.. У тебя же, судя по всему, не аутофмемори, а сильная дефрагментация кучи
Обсуждают сегодня