对C++Builder文件操作类的改进

Author: 孙晓光 Date: 2001年 23期

?牐犖阌怪靡蒀++ Builder是一个很好的软件开发平台,与Visual C++相比它的快速开发能力具有很大的优势。然而由于C++ Builder的VCL库的精简性因而在进行文件操作时不太方便。比如,在进行逗号分隔文本文件的流式操作时无直接对应的类来实现功能,而逗号分隔文本文件在简单程序中还是很有用处的,为此我在VCL的TFileStream类的基础上建立了文本文件类TStdioFile以解决前面的问题。在TStdioFile类中我加入了两个成员函数用于对文本文件进行操作,这两个成员函数是unsigned int ReadItem(String & Buffer)和unsigned int WriteItem(String Buffer)。可以清楚看出ReadItem函数用于从逗号分隔文本文件中的当前位置读出由逗号分隔的文本,而WriteItem函数用于在文件当前位置处写入一段由逗号分隔的文本。程序可以经简单修改来支持更多的分隔类型如顿号、斜线等等。在使用中注意在写入最后一段文本后要执行一下TFileStream.Size来删掉最后一个无用的分隔符。
  #1?牐牫绦蛉缦拢?
  ?牐?<StdioFile.h>
  ?牐燾lass TStdioFile: public TFileStream ??
  ?牐爗
      public:
  ?牐爑nsigned int ReadItem(String & Buffer);
  ?牐爑nsigned int WriteItem(String Buffer);??
  ?牐燭StdioFile(AnsiString FileName,unsigned short Mode);
  ?牐爙??
  ?牐?<StdioFile.cpp>
  ?牐燭StdioFile::TStdioFile(AnsiString FileName,unsigned short Mode):TFileStream(FileName,Mode)
  ?牐爗??
  ?牐爙
  ?牐爑nsigned int TStdioFile::ReadItem(String & Buffer)
  ?牐爗char * pTempBuffer = new char;
  ?牐燬tring Temp = "";
  ?牐爑nsigned short nBytesRead = 0;
  ?牐爑nsigned int nBytes = 0;
  ?牐爊BytesRead = Read(pTempBuffer,1);??
  ?牐爓hile (* pTempBuffer != ',' &&(Position < Size)) ??
  ?牐燭emp += * pTempBuffer;
  ?牐爊BytesRead = Read(pTempBuffer,1);??
  ?牐爊Bytes++;
  ?牐爙;??
  ?牐爄f (Position == Size) Temp += * pTempBuffer;
  ?牐燘uffer=Temp;
  ?牐爎eturn(nBytes);??
  ?牐爙
  ?牐爑nsigned int TStdioFile::WriteItem(String Buffer)
  ?牐爗char * pTempBuffer;
  ?牐爑nsigned int nBytes = 0;
  ?牐爁or (pTempBuffer = Buffer.c_str();*pTempBuffer != NULL; pTempBuffer++){
  ?牐燱rite(pTempBuffer,1);??
  ?牐爊Bytes++;
  ?牐爙;
  ?牐?* pTempBuffer = 44;
  ?牐燱rite(pTempBuffer,1);??
  ?牐爎eturn(nBytes);
      }