JPEG грешка 42 се съобщава, когато потокът е съкратен. Например, ако се опитате да заредите файл с нулева дължина в TJPEGImage
тогава грешка 42 е крайният резултат.
Ако се покажат някои изображения, но не всички, тогава най-вероятното обяснение е, че данните по някакъв начин не се връщат към БД и обратно.
Проверете размера на полето BLOB, когато го изпишете. Проверете дали съвпада с размера на файла, когато го записвате на дисков файл. Проверете дали дисковият файл е валиден JPEG. След това потвърдете, че полето BLOB има точно същата дължина, когато го прочетете отново. Може би нещо не е наред с вашия DB код и потокът се съкращава.
И така, първата стъпка тук е да потвърдите, че можете да възстановите точно същите данни, които първоначално сте поставили в DB.
Единствената друга мисъл, която имам, е, че графиката в контрола на изображението не винаги е JPEG. Кодът, който използвате за зареждане на изображението, Image1.Picture.Graphic.LoadFromStream()
предполага, че данните са JPEG. Ако сте запазили нещо различно от JPEG, тогава LoadFromStream()
ще се провали.