用SaveToFile总是出错
先定义一个TStringList *sg;
sg-> Add( "开始连接数据库\n ");
sg-> Add( "数据库连接成功\n ");
sg-> SaveToFile( "D:\\log\\log.txt ");
总是出错,有什么不对吗?
[解决办法]
1.TStringList *sg;//只是申请了一个指针,而没有分配空间
应该使用TStringList *sg=new TStringList();
或者
TStringList *sg;
sg=new TStringList();
...
delete sg;
sg=NULL;
另外要注意不要忘记delete;
2.要想不覆盖,需要将之前的文件先加载,再添加,然后保存。
TStringList *sg=new TStringList();
sg-> LoadFromFile( "D:\\log.txt ");//假设文件已存在,可以先判断一下,如果不存在可以先创建或者不加载
sg-> Add( "开始连接数据库\n ");
sg-> Add( "数据库连接成功\n ");
sg-> SaveToFile( "D:\\log.txt ");
delete sg;
sg=NULL;
[解决办法]
bool __fastcall Log(const AnsiString FileName,const AnsiString LogString)
{
TFileStream *LogFile;
AnsiString LogFileName;
LogFileName=FileName;
if (LogFileName.Trim()== " ")
LogFileName=FormatDateTime( "yyyymmdd ",Now())+ ".Log ";
if (FileExists(LogFileName) )
{
LogFile=new TFileStream(LogFileName,fmOpenReadWrite | fmShareDenyNone);
LogFile-> Seek(0,soFromEnd);
}
else
{
LogFile=new TFileStream(FileName,fmCreate | fmShareDenyNone);
}
try
{
LogFile-> Write(LogString.c_str(),LogString.Length());
}
__finally
{
LogFile-> Free();
}
}