C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28183] Re:Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의
조영일 [alberddo] 872 읽음    2003-12-12 14:30
마찬가지입니다. 값은 확인해 보니 Size=11 Position=6입니다.

김용수 님이 쓰신 글 :
: 문제의 종류가 무엇인지 알 수 없지만 아래와 같이 수정해서 실행해 보시기 바랍니다.
: 참고로 본인은 ZipBuilder를 사용한 적이 없고 ZipBuilder가 설치되어 있지 않으므로
: 아래 코드가 전혀 효과가 없거나 문법 오류가 발생할 수 도 있으니 이점 양지하여 주시기 바랍니다.
: 또한 아래 코드중 본인이 추가, 수정한 내역은
: Stream 관련 내역중 Read/Write시 Stream의 Position이 이동되는
: 부분에 대한 교정과 new 연산자로 배열을 할당 받은 경우 해제하는 delete [] 부분입니다.
: 후자의 경우 예전엔 그렇게 사용하는 것이 맞는 방법이였으나 요즘은 어떻게 바뀌었는지
: 모르겠네요 -.-;;
: 실행해 보시고 리플 달아주시면 고맙겠습니다(갠적으로 결과가 중금해서리... ^_^;;)
:
: 즐거운 하루 되시길.....
:
:   TMemoryStream*  ZipData;
:   AnsiString      strInput, strOutput;
:   char*           szData;
:   int             nSize;
:
:   strInput = "1111111111";
:
:   ////////////////////////////////////////////////////////
:   ZipData = new TMemoryStream();
:   ZipData->Write(strInput.c_str(), strInput.Length());
:   ZipBuilder1->AddStreamToStream(ZipData);
:
:   nSize = ZipBuilder1->ZipStream->Size; // 여기, ZipBuilder1->ZipStream->Position, ZipStream->Position 값 확인해 볼 것
:   szData = new char[nSize + 1];
:   ZipBuilder1->ZipStream->Position = 0; // 또는 ZipBuilder1->ZipStream->Seek( 0, soFromBeginning ); // 여기
:   ZipBuilder1->ZipStream->ReadBuffer(szData, nSize);
:   szData[nSize] = '\0';
:   strOutput = (AnsiString)szData;
:   delete [] szData; // 여기
:   delete ZipData;
:
:   ////////////////////////////////////////////////////////
:   ZipData = new TMemoryStream();
:   nSize = strOutput.Length();
:   szData = new char[nSize + 1];
:   strcpy(szData, strOutput.c_str());
:   ZipData->WriteBuffer(szData, nSize);
:   delete [] szData; // 여기
:   ZipData->Position = 0; // 여기
:   ZipBuilder1->ExtractStreamToStream(ZipData);
:
:   nSize = ZipBuilder1->ZipStream->Size; // 여기
:   szData = new char[nSize + 1];
:   ZipBuilder1->ZipStream->Position = 0; //  또는 ZipBuilder1->ZipStream->Seek( 0, soFromBeginning ); // 여기
:   ZipBuilder1->ZipStream->ReadBuffer(szData, nSize);
:   szData[nSize] = '\0';
:   strOutput = (AnsiString)szData;
:   delete [] szData; // 여기
:   delete ZipData;
:
:   ShowMessage(strOutput);
: --------------------------------------------------------------
:
: alberddo 님이 쓰신 글 :
: : ZipBuilder를 사용하여 ZipStream만든후 이를 AnsiString으로 저장했다가 사용하는 방법을 알고 싶습니다.
: : ReadBuffer, WriteBuffer를 사용하는 방법이 잘못 됬나요?
: :
: : 아래코드는 문제가 발생하는 코드입니다.
: :     TMemoryStream*  ZipData;
: :     AnsiString      strInput, strOutput;
: :     char*           szData;
: :     int             nSize;
: :
: :     strInput = "1111111111";
: :
: :     ////////////////////////////////////////////////////////
: :     ZipData = new TMemoryStream();
: :     ZipData->Write(strInput.c_str(), strInput.Length());
: :     ZipBuilder1->AddStreamToStream(ZipData);
: :
: :     nSize = ZipBuilder1->ZipStream->Size - ZipBuilder1->ZipStream->Position;
: :     szData = new char[nSize + 1];
: :     ZipBuilder1->ZipStream->ReadBuffer(szData, nSize);
: :     szData[nSize] = '\0';
: :     strOutput = (AnsiString)szData;
: :     delete szData;
: :     delete ZipData;
: :
: :     ////////////////////////////////////////////////////////
: :     ZipData = new TMemoryStream();
: :     nSize = strOutput.Length();
: :     szData = new char[nSize + 1];
: :     strcpy(szData, strOutput.c_str());
: :     ZipData->WriteBuffer(szData, nSize);
: :     delete szData;
: :     ZipBuilder1->ExtractStreamToStream(ZipData);
: :
: :     nSize = ZipBuilder1->ZipStream->Size - ZipBuilder1->ZipStream->Position;
: :     szData = new char[nSize + 1];
: :     ZipBuilder1->ZipStream->ReadBuffer(szData, nSize);
: :     szData[nSize] = '\0';
: :     strOutput = (AnsiString)szData;
: :     delete szData;
: :     delete ZipData;
: :
: :     ShowMessage(strOutput);

+ -

관련 글 리스트
28162 ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의 alberddo 807 2003/12/10
28169     Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의 김용수 789 2003/12/11
28183         Re:Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의 조영일 872 2003/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.