Q&A

  • BLOB 어떻게 해야 32K 한계를 벗어날수 있는가
기존 Q/A에 올라온 자료를 참고하여 불필요한 부분을 빼고 했는데도

변함없이 32K는 실패로 돌아가다....

아래 코딩에 문제가 있는건지 아니면 어떤 다른 문제가 있는건지

참고로 DB는 오라클 DataType은 LONG LAW 이고요

BDE의 BLOB 과 BLOB CASH 인가요 둘다 32와 64에서

256, 256으로 변형 했지만 역시 변함없이 문제가 발생합니다...

코딩에 문제인지 아니면 다른 문제인지

답변 기다립니다...



//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

// Image를 BlobField로...

//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Procedure FN_JpgToGraphicField(pImage1: TImage; pGrField: TBlobField;

sFileName: String);

var

JPG: TJPEGImage;

JPGStream: TBlobStream;

s_Ext: String;

i_pos, i_width: Integer;

Begin

//=-=-=>> 파일명중 확장자만 검출

i_pos := pos('.', sFileName);

if i_pos <= 0 Then Exit;

i_width := Length(sFileName) - i_pos;

inc(i_pos);

s_Ext := Copy(sFileName, i_pos, i_width);

s_Ext := LowerCase(s_Ext);

//=-=-=>> 파일명중 확장자만 검출



JPGStream := TBlobStream.Create(pGrField, bmReadWrite);

pImage1.Picture.LoadFromFile(sFileName);

if Lowercase(s_Ext) = 'bmp' Then Begin // bmp일 경우

JPG := TJPEGImage.Create;

JPG.Assign(pImage1.Picture.Graphic);

JPGStream.Seek(0, soFromBeginning);

JPGStream.Truncate;

JPG.SaveToStream(JPGStream);

JPG.Free;

End

else Begin // gif, jpg일 경우

JPGStream.Seek(0, soFromBeginning);

JPGStream.Truncate;

pImage1.Picture.Graphic.SaveToStream(JPGStream);

End;

JPGStream.Free;

End;



//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

// BlobField를 이미지로...

//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

procedure FN_GraphicFieldToJpg(pImage1: TImage; pGrField: TBlobField);

var

JPGStream: TStream;

JpgImage : TJPEGImage;

gifImage : TGIFIMAGE;

s_Ext: String;

begin

if pGrField.IsNull Then Begin

pImage1.Picture.Graphic := nil;

Exit;

End;

s_Ext := Copy(pGrField.AsString, 1, 3);

s_Ext := LowerCase(s_Ext);

JPGStream := pGrField.DataSet.CreateBlobStream(pGrField, bmRead);

if s_Ext = 'gif' Then Begin

gifImage := TGifImage.Create;

gifImage.LoadFromStream(JPGStream);

PImage1.Picture.Assign(gifImage);

gifImage.Free;

End Else Begin

JpgImage := TJPEGImage.Create;

jpgImage.LoadFromStream(JPGStream);

pImage1.Picture.Assign(jpgImage);

JpgImage.Free;

End;

JPGStream.Free;

end;



2  COMMENTS
  • Profile
    김태균 2000.05.19 20:00
    BDE 5.0 인가 이상 부터는 1000K 까지 지원 합니다.

    BDE 설정에서 BLOB 사이즈를 999로 넣구 하세요

  • Profile
    김하늘 2000.05.20 02:08
    글쎄요 5.11이라고 하는 BDE 엔진을 받아서 해보았는데 마찬가지더군요...

    BOLB 사이즈 999란 특별한 의미가 없는것 같은데요 999K의 크기

    까지 넣을 수 있다는 뜻같은데 변함없이 32K에서 맴맴 도네요...



    김태균 wrote:

    > BDE 5.0 인가 이상 부터는 1000K 까지 지원 합니다.

    > BDE 설정에서 BLOB 사이즈를 999로 넣구 하세요