关于文件和计数器的问题,有经验者请!

windfantasy 2002-09-16 06:38:05
1、我写了一个文件传输的小程序,程序中要求对每一步操作和错误信息都写到LOG文件中。因此在程序中需要频繁的写文件。我的做法是每写一次文件就执行:打开文件、写文件、关闭文件。 如下:
try
Append(F);
writeln(F,'log message');
finally
CloseFile(F);
但是这样的做法当写文件的时间间隔很小时将可能使系统变慢,很耗资源。另外的做法就是在程序的一开始打开文件,直到程序终止才关闭文件。但是我怕这样做如果程序中途出错非法终止,那就无法释放文件资源。
请问到底有什么好的方法吗?不知道各位平时碰到类似情况都是用的什么解决方法?

2、我的程序需要定时到服务器上取文件,但是如果文件很大,传输时间就会比较长,甚至在下一次OnTimer事件触发时还没有结束。我想问,此时会发生什么情况?有什么冲突吗?该如何解决?

以上两个问题困扰了我半天,也不知道该如何解决。希望大家多多帮忙!速速!
...全文
82 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windfantasy 2002-09-17
  • 打赏
  • 举报
回复
难道对这个问题没有高手吗?还是高手们都对此菜鸟问题不屑一顾?
windfantasy 2002-09-17
  • 打赏
  • 举报
回复
楼上的,有这种说法吗?
如果这样的话,那要close(f)函数干吗?
windfantasy 2002-09-17
  • 打赏
  • 举报
回复
我最关心的是第二个问题:如果OnTimer事件触发时,上一次的OnTimer事件还没结束,那会发生什么情况?
怎么没人回答?
windfantasy 2002-09-17
  • 打赏
  • 举报
回复
就算是做成类,那也不是说不要打开关闭文件啊,只是在类之内自动做了而已。
如果我的程序是5秒钟(甚至更短)就执行一次文件传输操作,每次都要对连接服务器、更改当前目录、下载、断开服务器连接等操作的执行情况,是否出错等都记录下来,那样的话对文件的打开关闭等就是非常频繁的了。我想对系统是有影响的。
wangchinaking 2002-09-17
  • 打赏
  • 举报
回复
你可以将写日志的操作做成一个日志类,
以后如果要写日志的话,只要调用该定义
类中的方法即可.
当然,你的代码文件中要Include这个类
(不用说你也应该知道怎么做吧!),并且
要在你需要调用写日志方法的类中定义
一个Protected或Public类型的参量,这样
的话,你就可以在本类的范围内随时调用
它了,根本没有必要去考虑什么打开和关闭
文件,因为那是多余的!!!!!!!!!!!!!!!
wangchinaking 2002-09-17
  • 打赏
  • 举报
回复
你的担忧是多余的.
在需要写日志时打开文件进行读写操作是没有问题的!
它并不至于能够影响到系统及软件的性能,简直是微乎其微!
stanely 2002-09-16
  • 打赏
  • 举报
回复
程序进程终止了打开的文件自动被关闭,不必担心
windfantasy 2002-09-16
  • 打赏
  • 举报
回复
TO 楼上:
1、每执行一个步骤就要写一句LOG信息,所以你的方法不太可行。而且,LOG信息中需要包括错误信息,照你的方法的话,如果程序中间出错了,根本都没能保存LOG信息程序就非法终止了。
2、我想你指的是线程吧?我的Timer已经是在线程中了。
界渊 2002-09-16
  • 打赏
  • 举报
回复
1。可不可以等到程序结束后才写进文挡。(用一临时变量或直接一个控件)
2。不知道是否冲突,但一般采用进程。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧