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
[28169] Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의
김용수 [heredity] 789 읽음    2003-12-11 14:04
문제의 종류가 무엇인지 알 수 없지만 아래와 같이 수정해서 실행해 보시기 바랍니다.
참고로 본인은 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 808 2003/12/10
28169     Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의 김용수 789 2003/12/11
28183         Re:Re:ZipBuilder1->ZipStream을 AnsiString으로 변환 및 재변환하는 방법문의 조영일 873 2003/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.