Я работаю над проектом, состоящим из нескольких скомпилированных приложений Delphi (более 20 exe и dll), и мне нужно будет поделиться более 60 изображениями (16x16, 24x24, 32x32,...) между всеми их.
У меня есть два разных способа обмена изображениями между всеми приложениями, но я не уверен, что лучше:
Идея 1:
Создайте проект DLL, доступный только для ресурсов, который содержит ссылку ссылки на ресурс в файле .res, который содержит все мои изображения. Каждое приложение, в свою очередь, загружает DLL и считывает необходимые изображения, которые могут потребоваться либо в TImageList, либо в TImage в зависимости от того, что ему нужно.
Плюсы: позволяет сохранять изображения в репозитории в их собственном формате.
Минусы: я не буду видеть изображения во время разработки, так как они будут загружаться только во время выполнения. Мне также нужно создать такое же количество констант, как и изображения, или использовать набор с тем же числом значений, что и изображения, чтобы каждое изображение можно было ссылаться независимо от его имени в файле ресурсов.
Идея 2:
Создайте модуль данных, который скомпилирован как bpl и включен как пакет времени выполнения для всех приложений. Я бы добавил изображения к нескольким TImageList (в зависимости от размера изображения) или к TPngImageList (который позволяет изображениям нескольких размеров на одном компоненте).
Плюсы: я смогу добавить этот модуль данных ко всем приложениям, которые мне нужны, и увидеть во время разработки все изображения, которые мне могут понадобиться.
Минусы: все изображения будут загружены в память, даже если мне нужно использовать их только. Мне нужно убедиться, что порядок изображений никогда не изменяется при добавлении/изменении изображений в TImageList/TPngImageList. Все изображения будут сохранены в одном формате .dfm.
Идея 3: (новая)
Посмотрев на другие приложения, которым также нужно обмениваться изображениями между скомпилированными exe, у меня возникла еще одна идея. Сохраните все общие изображения в виде простых файлов png/ico в подпапке, где скомпилированные файлы (например, данные).
Плюсы: не нужно загружать все изображения в память, я могу просто получить нужные. Это может быть особенно важно, если общее количество изображений довольно велико (одно приложение, использующее этот метод, имеет 1400 изображений в подпапке данных).
Минусы: изображения будут видимыми/доступными для всех. Может использовать немного больше места на диске пользователя.
Я хотел бы попросить дать комментарии по этим двум идеям или любым другим предложениям о том, как лучше выполнить это.
Спасибо!