|
김용수 님이 쓰신 글 :
: 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;
delete [] 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;
: : 이런 방법으로 정보를 가져오고 있는 데 직접 가져올 수 있는 방법이 있을 거 같아서 문의드립니다.
|