Этой информации недостаточно для продолжения. Единственное, в чем я могу быть уверен, это то, что это почти наверняка не вызвано повреждением зашифрованного изображения. Access Violation
означает недопустимый доступ к памяти где-либо. Либо вы разыменовываете указатель nil , либо у вас повреждена память.
Просто, следуя моей интуиции, первое, что я проверю, это то, что вы делаете с приведением указателей в первой строке, правильно. Ошибки указателя являются частым источником нарушений доступа.
Кроме того, это ошибка нулевого указателя или поврежденная ошибка указателя? Вы можете сказать по адресу в нарушении доступа. Если любой из них начинается с группы 0 (или, в редких случаях, группы F), это означает, что вы где-то разыменовываете nil . Убедитесь, что bmp
и bmp.canvas
назначены. Но если оба адреса выглядят как действительные адреса памяти, значит, у вас повреждение памяти. Это сложнее отследить, и вам придется потратить некоторое время на отладчик.