1、我写了一个文件传输的小程序,程序中要求对每一步操作和错误信息都写到LOG文件中。因此在程序中需要频繁的写文件。我的做法是每写一次文件就执行:打开文件、写文件、关闭文件。 如下:
 try
    Append(F);
    writeln(F,'log message');
  finally
    CloseFile(F);
但是这样的做法当写文件的时间间隔很小时将可能使系统变慢,很耗资源。另外的做法就是在程序的一开始打开文件,直到程序终止才关闭文件。但是我怕这样做如果程序中途出错非法终止,那就无法释放文件资源。
请问到底有什么好的方法吗?不知道各位平时碰到类似情况都是用的什么解决方法?2、我的程序需要定时到服务器上取文件,但是如果文件很大,传输时间就会比较长,甚至在下一次OnTimer事件触发时还没有结束。我想问,此时会发生什么情况?有什么冲突吗?该如何解决?以上两个问题困扰了我半天,也不知道该如何解决。希望大家多多帮忙!速速!

解决方案 »

  1.   

    TO 楼上:
    1、每执行一个步骤就要写一句LOG信息,所以你的方法不太可行。而且,LOG信息中需要包括错误信息,照你的方法的话,如果程序中间出错了,根本都没能保存LOG信息程序就非法终止了。
    2、我想你指的是线程吧?我的Timer已经是在线程中了。
      

  2.   

    楼上的,有这种说法吗?
    如果这样的话,那要close(f)函数干吗?
      

  3.   

    你可以将写日志的操作做成一个日志类,
    以后如果要写日志的话,只要调用该定义
    类中的方法即可.
    当然,你的代码文件中要Include这个类
    (不用说你也应该知道怎么做吧!),并且
    要在你需要调用写日志方法的类中定义
    一个Protected或Public类型的参量,这样
    的话,你就可以在本类的范围内随时调用
    它了,根本没有必要去考虑什么打开和关闭
    文件,因为那是多余的!!!!!!!!!!!!!!!
      

  4.   

    我最关心的是第二个问题:如果OnTimer事件触发时,上一次的OnTimer事件还没结束,那会发生什么情况?
    怎么没人回答?