Q&A

  • jpeg error #52 에러에 관하여
안녕하세요... 델파이 초보자 입니다...!!  
jpg 그림 파일을  데이터 베이스에 저장 하였다가.. 불러 들이는데 위와 같은 에러가 납니다.

select 쿼리를 날려서 가져온 데이터를 아래 프로시져를 거쳐 TImage 컴퍼넌트에 집어 넣는 건데여...  같은 프로그램을 C/S버전으로 바꾸고 나서 부터 위와 같은 에러가 나더군요...  질문 글들을 살펴 보니깐.. jpeg포맷이 맞지 않아서 나는 에러라 하는데요..

c/s버전으로 바꾸기 전에는 잘 되던 소스 였습니다... 제생각으로는 아마도 DB를 바꾸면서 문제가 되지 않았는 싶습니다만...(파라독스(Graphi) -> 인터베이스(bolb))바꿨습니다....   저장 되는 작업에서는 에러 없이 저장이 되었는데여.... 다시 불러 들이니..
위와 같은 에러가 납니다...

혹시나 해서 인터베이스에 테이블 생성시.. 타입도 적어봅니다,
"PIC1"        BLOB SUB_TYPE 0 SEGMENT SIZE 80 --> 저 세그먼트라는 값은 적지 않아도 자동 생성 되더군요.. 상당히 거슬림..(--^)

고수님들의 답변 부탁드립니다...

procedure TdmPubCon.setImage(img : TImage; imgParam : String);
var
  aJpeg : TJpegImage;
  Buffer: PChar;
  MemSize: Integer;
  BStream : TStream;
begin
  BStream := ClnDS.CreateBlobStream(ClnDS.FieldByName(imgParam),bmRead);
  showmessage(inttostr(BStream.Size));
  MemSize := BStream.Size;
  Inc(MemSize);
  Buffer := AllocMem(MemSize);
  try
    BStream.Read(Buffer^, MemSize);
    BStream.Position := 0;
    aJpeg := TJPEGImage.Create;
    try  
      aJpeg.LoadFromStream(BStream);  --> 여기서 에러가 나더군요..
      img.Picture.Assign(aJpeg);

    finally
      aJpeg.Free;
    end;
  finally
    FreeMem(Buffer, MemSize);
  end;
end;
1  COMMENTS
  • Profile
    허성준 2004.08.08 20:12
    님이 쓰고 계신 코딩 또한 저도 사용하고 있는데 아무 문제 없이 사용하고
    있습니다.(소스 올려주신분들 감솨요^^;)
    다만 jpeg 이미지에 문제가 있어서 발생하는거 같습니다. 저의 경우 bmp이미지인데 확장자가 jpg로 되어 있거나 사이즈 0의 파일이거나 할때 error가 발생했습니다. 찾아보시면 jpeg error에 대한 자세한 설명을 보실수 있을꺼예요.
    뭐 코딩이 마음에 않든다면 김영대 님의 http://www.howto.pe.kr/ 로 가시면
    소스들이 있을껍니다.
    답변이 되었나 모르겟네요 ^^;
    그럼! 즐코~~~