다들 바쁘실텐데 글을 읽어 주셔서 일단 감사의 뜻을 전합니다.
아래와 같은 코드를 작성했습니다. 목적으로는, 스트림을 이용한 비트맵 로드를
구현해 보려는 것이었습니다.
-code-
procedure TForm1.Button1Click(Sender: TObject);
var
FS : TFileStream;
Bms : TStream;
Bm : TBitmap;
size : Integer;
begin
try
FS := TFileStream.Create('B.Bmp', fmOpenRead);
Size := FS.Size; //비트맵의 사이즈를 변수에 저장시킨다.
Bms:= TStream.Create;
Bm := TBitmap.Create;
Bms.CopyFrom(FS, Size); // FS 에 있는 내용을 Size 만큼 Bms 로 복사를 한다.
// 이렇게 Bms에 복사를 해준 까닭은 아래의
// LoadFromStream 메쏘드에는 크기만큼 떼어서 복사해주는
// 기능이 없기때문이다. 이 소스에선 상관없지만
// 다른 물건을 만들던 중인데 그곳에선 이런 방법을 이용해
// 야 했다.
Bm.LoadFromStream(Bms); // 비트맵 구조체에 Bms 스트림에 있는 내용을 불러온다.
finally
FS.Destroy;
Bms.Destroy;
Bm.Destroy;
end;
end;
-code-
그런데 여기서 Bm.LoadFromStream(Bms); 라는 부분에서 abstract Error 라는게 납니다.
물론 컴파일은 이상없이 되고, 실행되던 도중에 위의 에러가 나서 문제입니다.
저렇게 하려고 했던 제 생각이 잘못된 것일까요?
델파이 책을 2권 가지고 있는데 스트림에 대한 언급은 없습니다. 그래서 도움말을
보자니 좀 뭐하고 해서, 고수님들에게 도움을 청하고자 이렇게 글을 씁니다.
저도 뭔가 알고 있는 것이 있으면 누구에게 가르쳐 주고 싶지만 아는게 없는 햇병아리
라서 그럴 수가 없네요.
그럼 읽어주셔서 감사하구요 난해한 글이 되어버리지 않았을까 해서 걱정스럽습니다.
그럼, 즐거운 하루 되십시오.