|
TStream에 읽기/쓰기를 하게 되는 작업을 하기 전에는 TStream의 어느 위치에서 부터 작업을 할지
지정해 주어야 합니다.
처음부터 끝까지 읽어오려하는데 현재 Position이 0이 아닌 상태라면 안 되겠죠?
한편, m->LoadFromFile("c:\\temp.tmp"); 을 한 후에는 m의 Position이 해당 파일의 크기와 같아집니다.
따라서, 이미 Position이 0이 아닌 상태인데 처음부터 읽으려면 아래와 같이 해주어야 합니다.
m->Seek(0,soFromBeginning);
그리고,
굳이 디스크 파일을 거쳐야 할 다른 이유가 없다면 m은 TForm1 클래스의 멤버로 선언/정의 해야 합니다.
짱구오빠 님이 쓰신 글 :
: //---------------------------------------------------------------------------
: void __fastcall TForm1::BitBtn2Click(TObject *Sender)
: {
: TJPEGImage *jpg = new TJPEGImage ();
: jpg->LoadFromFile (m_sVectorImagePath);
:
: Graphics::TBitmap *pBitmap = new Graphics::TBitmap ();
: pBitmap->Assign (jpg);
:
: TMemoryStream*m=new TMemoryStream();
: pBitmap->SaveToStream(m);
: m->SaveToFile("c:\\temp.tmp");
:
: delete jpg;
: delete pBitmap;
: delete m;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::BitBtn4Click(TObject *Sender)
: {
: Graphics::TBitmap *pBitmap = new Graphics::TBitmap ();
:
: TMemoryStream*m=new TMemoryStream();
: m->LoadFromFile("c:\\temp.tmp");
: pBitmap->LoadFromStream(m);
:
: Image1->Picture->Bitmap->LoadFromStream(m);
:
:
: delete m;
: delete pBitmap;
: }
|