Lỗi JPEG 42 được báo cáo khi luồng bị cắt ngắn. Ví dụ:nếu bạn cố gắng tải một tệp có độ dài bằng 0 vào một TJPEGImage
thì lỗi 42 là kết quả cuối cùng.
Nếu một số hình ảnh hiển thị, nhưng không phải tất cả, thì lời giải thích có khả năng nhất là dữ liệu bằng cách nào đó không thực hiện chuyến đi khứ hồi đến DB và quay lại.
Kiểm tra kích thước của trường BLOB khi bạn viết nó ra. Kiểm tra xem nó có phù hợp với kích thước của tệp khi bạn ghi nó vào tệp đĩa hay không. Kiểm tra xem tệp đĩa có phải là JPEG hợp lệ không. Sau đó, xác nhận rằng trường BLOB có cùng độ dài khi bạn đọc lại. Có lẽ đã xảy ra lỗi với mã DB của bạn và luồng đang bị cắt bớt.
Vì vậy, bước đầu tiên ở đây là xác nhận rằng bạn có thể khôi phục chính xác dữ liệu mà bạn đã đưa vào DB ban đầu.
Ý nghĩ khác duy nhất mà tôi có là đồ họa trong điều khiển hình ảnh không phải lúc nào cũng là JPEG. Mã mà bạn sử dụng để tải hình ảnh, Image1.Picture.Graphic.LoadFromStream()
giả định rằng dữ liệu là JPEG. Nếu bạn đã lưu thứ gì đó không phải là JPEG thì LoadFromStream()
sẽ thất bại.