어떤 파일을 열어서 헤더를 넣어줘야할 경우가 있을때
파일혹은 메모리스트림을 불러놓고 다른 스트림을 선언해서 헤더를 쓴후 불러왔던 스트림을 다시 쓰는데요..(혹은 CopyFrom()) 여러가지로 낭비라 느껴져서 ...
아래와 같이 테스트를 해보면
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMemoryStream *ms = new TMemoryStream;
String str = "abcd";
TBytes b = str.BytesOf();
ms->Write(b,b.Length);
ms->Position = 0;
str = "1234";
b = str.BytesOf();
ms->Write(b,b.Length); //1234를 앞에 넣으면 당연히 abcd는 사라진다.
ms->Position = 0;
b.Length = 8;
ms->Read(b,8);
str = "";
for(int i = 0; i < 8; i++)
str += "0x" + IntToHex(b[i],2) + " ";
Memo1->Lines->Add(str); //"1234abcd" 가 나왔으면 좋겠음...
//결과는 당연히 1234와 쓰레기4바이트..
delete ms;
}
역시 스트림 두개로 조립하는 방법뿐인가요?
TList의 Insert(0,xxx) 이런게 있음 좋을텐데..
|