아~ 염치가 없습니다...
알려주신데로...열심히 해보고..또한 계속 다른 방법을 써보았으나..역쉬...안되네요..
에러는 역시 캐스팅하라는 것이네요...
TBlobStream *bs;
bs = new TBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->LoadFromStream(bs);
여기에서... 2번째 줄에서 멈춰버립니다...
오라클에서 long raw를 썼었는데...
알려주신데로 안돼서...blob로 계속 해봤으나...입력시...에러..
트랜잭션이 걸쳤다는 에러였슴다...알고보니....단방향데이터셋(dbExpress)는
2단계커밋을 지원안한다네요...쩝..
이제는 입력이 잘 된건지도 의심스러워지는 지경이네요..헐헐~
안돼는지 알면서 똑같은 짓 계속하고 있는 제 모습을 보면서....
점점 자신감을 잃어가네요...쩝..씁쓸하네요...
우쨌든...다시 한번 봐주시면...감사하겠슴니다...
p.s
책작업하기 힘드시겠지만...
책쓰실때...꼭 이러한 이미지에 관련된 처리부분이나...Blob에 대한 처리 방법을
넣어주세요..
박지훈.임프 님이 쓰신 글 :
: 저번엔 정신이 없어서 제대로 못봤는데... (지금도 정신이 없습니다만.. --)
: 다음과 같이 하면 될 겁니다.
:
: TBlobStream *bs;
: bs = new TBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
: dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->LoadFromStream(bs);
: (TJPEGImage 객체를 만들어서 불러들이고 다시 Assign하고 할 필요가 없네요)
:
: 그럼...
:
:
: 죄악 님이 쓰신 글 :
: : ㅜㅜ 감솨함돠...암두 관심을 가져주시지 않았는데..
: :
: : 이렇게 또 질문드리는데 죄송하네요...
: :
: : 아래와 같이...주석부분도 다해봤습니다...
: :
: : 깊이 있는 공부를 안하다 보니...이것저것 다 해보게 되는군요..
: :
: : 제가 데이타베이스만 잡고 있다가 프로그램도 할라니...참 힘드네요..
: :
: : 한번만 더 봐주시면 감사하겠습니다....
: :
: : 완전한 예제를 보여주시면 더 감사하구요(너무 무리한 부탁이죠? 질문자의 특성인가 봅니다.)
: :
: : (근데...책 언제 나오나요? 오라클에 이미지나 파일 집어넣구..검색하는 것도
: :
: : 나오나요?? 그것만 나와도 당장 달려가 책 사볼텐데 말이죠.. ^^)
: :
: : ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: : ClientDataSet2->Open();
: :
: : //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic)->Assign(ClientDataSet2->FieldByName("PHOTO"));
: : //Image1->Picture->Assign(ClientDataSet2->FieldByName("PHOTO"));
: : //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic);
: : //dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->Assign(jpg);
: :
: :
: : TBlobStream *bs;
: : TJPEGImage *jpg;
: :
: : bs = new TBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
: :
: : jpg = new TJPEGImage;
: : jpg->LoadFromStream(bs);
: :
: :
: : //dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->Assign(jpg);
: : //(Image1->Picture->Graphic)->Assign(jpg);
: : //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic)->Assign(jpg);
: : //((TJPEGImage *)(Image1->Picture->Graphic))->Assign(jpg);
: : Image1->Picture->Graphic->Assign(jpg);
: :
: :
: : delete jpg;
: : delete bs;
: :
: :
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : TImage나 TDbImage의 Picture는 TPicture 타입인데요.
: : : 이넘이 기본으로는 JPG를 지원 안하기 때문입니다.
: : :
: : : 하도 오래되어서 기억이 넘 가물거리는데... (3년 정도 전에 자주 질문받던 내용...)
: : : JPG 이미지는 TJPEGImage 타입으로 캐스팅을 해야 됩니다.
: : :
: : : 그리고.. '=' 을 써서 집어넣을 수 있는 것이 아니라.. Assign() 함수를 써야 합니다.
: : : 대충 기억나는대로 끄적거려보면...
: : : ((TJPEGImage *)(Image1->Picture->Graphic))->Assign(jpg);
: : : 이렇게 해야 하는 거 같은데...
: : :
: : : 다음 글도 참고하세요..
: : :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=655
: : :
: : : 잘 안되시면 다시 질문해주세요.
: : : 제가 지금 27시간째 잠을 못자고 있어서 좀 헤롱거립니당...
: : :
: : : 그럼...
: : :
: : :
: : :
: : : 죄악 님이 쓰신 글 :
: : : :
: : : : 개발 환경은 3-Tier 이고, 빌더6을 사용하고 있습니다.
: : : :
: : : : 클라이언트 <-> App 서버 <-> DB 서버
: : : :
: : : : DBMS는 오라클입니다..
: : : :
: : : : 일단 테이블은 varchar2 컬럼과 long raw 컬럼 두개 입니다..테스트용으로 만들었습니다..
: : : :
: : : : #include <jpeg.hpp> 했구요..
: : : :
: : : : 아래와 같이 코드를 작성했습니다...일단 데이타베이스에 들어가는 것 같기는 합니다..
: : : :
: : : : 그런데 아래의 코드를 실행하면 jpeg error #52 에러가 뜨네요..
: : : :
: : : :
: : : : ==========================================================================================
: : : :
: : : : void __fastcall TForm1::Button2Click(TObject *Sender) // DB에 저장
: : : : {
: : : : ClientDataSet1->Params->Items[0]->Value = Edit1->Text;
: : : : ClientDataSet1->Params->Items[1]->LoadFromFile(Edit2->Text.c_str(),ftBlob);
: : : : ClientDataSet1->Execute();
: : : : ClientDataSet1->Close();
: : : :
: : : : //어플리케이션 서버에서..
: : : : //insert into test3(student_num, photo) values(:student_num, :photo);
: : : :
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : : void __fastcall TForm1::Button3Click(TObject *Sender) //DB에서 불러오기
: : : : {
: : : : ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: : : : ClientDataSet2->Open();
: : : :
: : : : //어플리케이션 서버에서..
: : : : //select photo from test3 where student_num = :student_num
: : : :
: : : : TClientBlobStream *bs;
: : : : TJPEGImage *jpg;
: : : : bs = new TClientBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
: : : :
: : : : jpg = new TJPEGImage;
: : : : jpg->LoadFromStream(bs);
: : : :
: : : : Image1->Picture->Graphic = jpg;
: : : :
: : : :
: : : : delete jpg;
: : : : delete bs;
: : : :
: : : :
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : :
: : : : ==========================================================================================
: : : :
: : : :
: : : :
: : : : 그리고 아래와 같이 해보았더니 역시 'Bitmap image not valid'에러가 뜨는 군요..
: : : :
: : : : ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: : : : ClientDataSet2->Open();
: : : : mage1->Picture->Assign(ClientDataSet2->FieldByName("PHOTO"));
: : : :
: : : : 음...환장하것네요...
: : : :
: : : : 외국의 뉴스그룹도 찾아보고 했는데도 당췌 모르겠네요..
: : : :
: : : : 여유있으실때 해결의 실마리가 될만한 단어라도 꼭 알려주세요...
: : : :
: : : : 한달동안 이짓만 하고 있네요...헐헐~(그냥 넋두리 임돠..)
: : : :
: : : : 읽어 주셔서 감사하구요...행복한 하루되시길 바랍니다..