|
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);
|