对C++Builder文件操作类的改进 孙晓光 2001年 23期 毋庸置疑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);    }