|
TStream의 ReadBuffer() Method를 쓰면 됩니다.
그런데 님의 경우와 같이 TStream의 내용을 문자열로 변환할 경우 사용했던
TStringList 또는 TStrings의 LoadFromStream() Method보다 별로 편리해 보이진 안는 군요.
아래는 TMemoryStream에 대한 사용예 입니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "tStream.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
AnsiString asTMemoryStream2AnsiString( TMemoryStream *pStream )
{
AnsiString asRtv = "";
if( pStream != NULL ) {
int nSize = pStream->Size - pStream->Position; // 현 위치 부터 나머지 자료를 읽도록 함.
PCHAR pchStr = new char[nSize + 1];
pStream->ReadBuffer( pchStr, nSize );
pchStr[nSize] = '\0';
asRtv = pchStr;
}
return( asRtv );
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
TMemoryStream *pStream = new TMemoryStream();
pStream->LoadFromFile( ".\\test.txt" );
Caption = asTMemoryStream2AnsiString( pStream );
delete pStream;
}
//---------------------------------------------------------------------------
alberddo 님이 쓰신 글 :
: TStream변수에 저장된 값을 AnsiString변수에 저장하고 싶은 데 방법을 몰라서
: Memo1->Lines->LoadFromStream(Stream);
: AnsiString strData = Memo1->Text;
: 이런 방법으로 정보를 가져오고 있는 데 직접 가져올 수 있는 방법이 있을 거 같아서 문의드립니다.
|