Błąd JPEG 42 jest zgłaszany, gdy strumień jest obcinany. Na przykład, jeśli spróbujesz załadować plik o zerowej długości do TJPEGImage
wtedy błąd 42 jest wynikiem końcowym.
Jeśli wyświetlają się niektóre obrazy, ale nie wszystkie, najbardziej prawdopodobnym wyjaśnieniem jest to, że dane w jakiś sposób nie przechodzą w obie strony do bazy danych iz powrotem.
Sprawdź rozmiar pola BLOB podczas wypisywania. Sprawdź, czy zgadza się z rozmiarem pliku podczas zapisywania go do pliku na dysku. Sprawdź, czy plik na dysku jest prawidłowym plikiem JPEG. Następnie potwierdź, że pole BLOB ma dokładnie taką samą długość, gdy będziesz je ponownie czytać. Być może coś jest nie tak z twoim kodem DB i strumień jest obcinany.
Tak więc pierwszym krokiem tutaj jest potwierdzenie, że możesz odzyskać dokładnie te same dane, które pierwotnie umieściłeś w DB.
Jedyną inną myślą, jaką mam, jest to, że grafika w kontrolce obrazu nie zawsze jest w formacie JPEG. Kod używany do ładowania obrazu, Image1.Picture.Graphic.LoadFromStream()
zakłada, że dane są w formacie JPEG. Jeśli zapisałeś coś innego niż JPEG, to LoadFromStream()
nie powiedzie się.