简单的记事本日志类

来源:互联网 发布:免费小说阅读软件 编辑:程序博客网 时间:2024/05/06 14:24

一个简单的记事本功能类,可以用来记录日志,有时想看看线程中的数据,可以用日志文件来解决。

#ifndef __filelog__#define __filelog__#include <sysutils.hpp>typedef int fHandle;class filelog{    private:       fHandle FileHandle;   //文件句柄       AnsiString m_fileName;       bool isTimeChange();    public:       void OpenFile(AnsiString filename);   //打开文件       void WriteFile(AnsiString str);       //文件尾部添加内容       AnsiString ReadFile(int pos,int rlen);//位置,长度       void CloseFile();};void filelog::OpenFile(AnsiString fileName){   m_fileName  = fileName;   if(!FileExists(fileName))   {      FileHandle  = FileCreate(fileName);      FileClose(FileHandle);   }   FileHandle = FileOpen(fileName,fmOpenWrite|fmShareDenyNone);}void filelog::WriteFile(AnsiString str){   if(isTimeChange())   {     CloseFile();     AnsiString file = Date().DateString()+".txt";     OpenFile(file);   }   char buf[1024]={0};   strcpy(buf,str.c_str());   int l    = strlen(buf); //内容长度   buf[l]   = '\r'; //加上换行符   buf[l+1] = '\n';   if(FileHandle)   {     int flen =FileSeek(FileHandle,0,2);//移动文件尾,换取文件长度     int a = strlen(buf);     FileSeek(FileHandle,flen,0);//重新设置文件指针移动方向     FileWrite(FileHandle,buf,strlen(buf));   }}AnsiString filelog::ReadFile(int pos,int flen){   char buf[1024]={0};   if(FileHandle)   {     FileSeek(FileHandle,pos,0);     int readCount = FileRead(FileHandle,buf,flen);     return buf;   }}void filelog::CloseFile(){    FileClose(FileHandle);}bool filelog::isTimeChange(){   AnsiString l_a = Date().DateString()+".txt";   bool l_c = l_a == m_fileName ?false:true;   return l_c;}#endif
以日期作为文件名,每天产生一个新的文件。调用如下:
filelog a;void __fastcall TForm1::Button6Click(TObject *Sender){   TDate a1 = Date();   AnsiString file = a1.DateString()+".txt";   a.OpenFile(file);}//---------------------------------------------------------------------------void __fastcall TForm1::Button7Click(TObject *Sender){   a.WriteFile(Now());}



0 0
原创粉丝点击