Ошибки и Решения: Загрузка Изображений в Формат TPicture из INI Файлов в Delphi 10.4
В рамках этой статьи рассмотрим задачу сохранения изображения в формате TPicture как base64-закодированных данных в файле INI и последующей загрузки этих данных обратно.
Сохранение Изображения
Для начала, рассмотрим процедуру SavePictureToIniFile, которая успешно сохраняет изображение в формате TPicture как base64-закодированные данные в файл INI. Пример кода:
procedure TForm1.SavePictureToIniFile(const APicture: TPicture);
var
LInput: TMemoryStream;
MyIni: TMemIniFile;
Base64Enc: TBase64Encoding;
ThisFile: string;
begin
// ... код сохранения изображения в INI файл ...
end;
Проблема Загрузки
Пользователь столкнулся с проблемой при попытке загрузить изображение обратно из INI файла. В коде процедуры btnLoadFromIniClick была допущена ошибка, заключающаяся в неправильном использовании метода ReadBinaryStream, который предполагал работу с шестнадцатеричной последовательностью байт, а не со строкой base64.
Решение Проблемы
Для корректной загрузки изображения необходимо сначала прочитать закодированную строку из INI файла, затем декодировать её в бинарный поток. Пример кода для решения проблемы:
var
ImgData: TBytes;
begin
// ... чтение и декодирование данных изображения ...
end;
Ключевым моментом является использование метода DecodeStringToBytes вместо ReadBinaryStream, что позволяет корректно обработать base64-закодированные данные.
Оптимизация
В исходном коде присутствовала лишняя операция копирования данных, которую можно избежать, используя TBytesStream:
var
ImgStream: TBytesStream;
begin
// ... создание потока для загрузки изображения ...
end;
Валидация
После декодирования строки из INI файла важно проверить валидность полученных данных. Можно использовать проверку на пустоту ImgData, а также попытаться загрузить изображение и проверить его размер:
try
ThisPicture.LoadFromStream(ImgStream);
except
// Обработка исключения, если изображение не валидно
end;
if ThisPicture.Width = 0 then
// Изображение не было загружено корректно
Заключение
В данной статье мы рассмотрели проблему сохранения и восстановления изображений в формате TPicture через INI файлы, а также предложили решения для устранения ошибок, с которыми может столкнуться разработчик при работе с такими задачами в Delphi 10.4.
Описание процесса сохранения и загрузки изображений в формате `TPicture` из INI файлов в среде разработки Delphi 10.4, включая устранение ошибок в коде.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.