C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[2664] BLOB 처리가 좀?
정진후 [] 4115 읽음    2000-01-11 00:00
안녕하십니까 , 정진후라고 합니다.
저는 지금 오라클에 BLOB 필드를 만들고 bmp이미지를
저장하고 파일로 내리는 일을 하고 있습니다.
TBlobStream 클래스의 메서드(Read, Write)
를 쓰던, 간단한 TBlobField 클래스의 메서드
(LoadFromFile, SaveToFile)를 쓰던 상관없이
파일의 중간에 쓸 데 없는 1바이트의 쓰레기 값이
들어갑니다.
물론, bmp파일의 특성상 1바이트의 쓸데 없는
정보가 있다고 하더라도 페인트 툴에서 보는 것은
아무 지장도 없고 또 전혀 차이를 알 수 도 없지요.
그런데 문제는 제가 다루는 bmp는 특수한 포맷을
가지고 있어서 파일의 맨뒤라면 모를까 중간의
1바이트라도 어긋나면 이미지로서
중요한 기능을 상실하는 쓸 데 없는 파일이 되고 만다는
데에 있습니다.

처리의 개요를 설명드리면, 우선 하드디스크 상에
있는 이미지를 TBlobField의 LoadFromFile을 사용하여
디비에 올립니다. 그 다음에 특정한 이름(예를 들면
C:\Test.bmp)을 부여하여 SaveToFile메서드로 파일로
내립니다. 8K미만의 파일에서는 아무 문제가 없이
잘 돌아가지만 8K가 넘어가는 파일에서는 0X2000번지
부근에서 꼭 한바이트의 쓰레기 값이 들어갑니다.
그 바이트를 지우고 원본과 결과 파일을 비교하면
완벽하게 같은 파일이 됩니다.
어떻게 해도 같은 결과가 나오는데요... 국내외
어느 사이트를 뒤져보아도 비슷한 문제점도 보고된 것이
없더군요. 단순한 데이터베이스 설정의 문제인지(Oracle, BDE)
아니면 제가 필요한 처리를 빼먹었는지 모르겠습니다만,
어떠한 방식으로 같은 처리를 해 보아도 같은 결과가
나오는 것이 조금 수상하군요.
혹시 같은 경험이 있으시거나 짚이는 데가 있으신 분의
조언을 기다리겠습니다. 감사합니다.
참, 그리고 임프님, 캡션없는 폼의 이동의 설명 감사합니다.
저에게도 많은 도움이 되었습니다.

+ -

관련 글 리스트
2664 BLOB 처리가 좀? 정진후 4115 2000/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.