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

毋庸置疑C++ 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 程序如下:
  
   class TStdioFile: public TFileStream

{
   public:
   unsigned int ReadItem(String & Buffer);
   unsigned int WriteItem(String Buffer);

TStdioFile(AnsiString FileName,unsigned short Mode);
   }


   TStdioFile::TStdioFile(AnsiString FileName,unsigned short Mode):TFileStream(FileName,Mode)
   {

}
   unsigned int TStdioFile::ReadItem(String & Buffer)
   {char * pTempBuffer = new char;
   String Temp = "";
   unsigned short nBytesRead = 0;
   unsigned int nBytes = 0;
   nBytesRead = Read(pTempBuffer,1);

while (* pTempBuffer != ',' &&(Position < Size))

Temp += * pTempBuffer;
   nBytesRead = Read(pTempBuffer,1);

nBytes++;
   };

if (Position == Size) Temp += * pTempBuffer;
   Buffer=Temp;
   return(nBytes);

}
   unsigned int TStdioFile::WriteItem(String Buffer)
   {char * pTempBuffer;
   unsigned int nBytes = 0;
   for (pTempBuffer = Buffer.c_str();*pTempBuffer != NULL; pTempBuffer++){
   Write(pTempBuffer,1);

nBytes++;
   };
   * pTempBuffer = 44;
   Write(pTempBuffer,1);

return(nBytes);
   }