У меня есть старое приложение, разработанное в Delphi 2006, в которое мне теперь нужно было внести некоторые изменения.
В этом приложении я загружаю изображения из поля «image» MsSQL, но когда я компилирую с delphi2010 Я получаю сообщение об ошибке: «поднял класс исключений EJPEG с сообщением« Ошибка JPEG # 51 ».»
Код, который получает изображение из базы данных:
aStream := TMemoryStream.Create;
Try
If LoadFromBlob(FieldByName('Picture'), aStream) then
begin
Pic:=TJpegImage.Create;
try
Try
Pic.LoadFromStream(aStream);
Picture.Assign(Pic); // <------ JPEG Error #51 here w D2010
Except
//something went wrong loading
HandleImageError();
End;
finally
Pic.Free;
end;
end;
Finally
aStream.Free;
End;
// ............
function LoadFromBlob(const AField: TField; const Stream: TStream): boolean;
var
ResultStr: string;
PResultStr: PChar;
begin
Result := false;
if (Assigned(AField)) and (Assigned(Stream)) then begin
try
ResultStr := AField.Value;
If ResultStr <> '' then
begin
PResultStr := PChar(ResultStr);
Stream.Write(PResultStr^, Length(ResultStr));
Stream.Seek(0,0);
Result := true;
end;
except
end;
end;
end;
Погуглил немногои обнаружил, что ошибка # 51 означает: JERR_NO_QUANT_TABLE, что бы это ни значило.
Когда я компилирую с Delphi 2006, тот же код работает нормально без ошибок, так что же происходит с D2010?