文件操作函数详细资料和例程(100分)

  • 主题发起人 主题发起人 邹光先
  • 开始时间 开始时间
To Kokusan :>>不初始化pchar类的指针也不会出错的。
另外,Filewrite和FileOpen的参数中buffer是什么类型?
给它加上const定义符是否有什么特别的意思?
在我的程序中为什么用buffer不行,而用buffer^就可以?

To Xueyu :>>你改的我运行了一下,不能通过,报告‘varibale required'
 
邹光先:
在通常情况下;不初始化pchar类的指针,编译时只有警告而已,运行会正常,
结果也正确。但是,如果在调试程序时,关上了IDE下的Project|Options|Com-
piler|Optimization开关,然后注释掉new(Buffer),再编译运行,你会发现结果
不对,但没有任何错误提示。因此为避免意想不到的麻烦,初始化pchar类的指针
是一个好的编程习惯,这一点你也可以参看《Delphi 3 从入门到精通》85页的相
应警告。
Filewrite和FileOpen的参数中,Buffer = array[0..127] of char。给它
加上const定义符没有什么特别意义。据我理解,Delphi向Win32 API传递该参数
时,有取指针的操作,而Pchar类型实际是一个指针,因此在你的程序中用buffer
时,向Win32 API传递的是指针的指针,当然结果就乱了;而用buffer^传递的是缓
冲区的指针,所以就可以。
建议尽量用Buffer = array[0..n] of char 的形式定义缓冲区,这样程序可
读性更强一些,概念更清楚一点;另外,最好用Delphi自己的文件操作函数,有错
误时会抛出异常。如果必须使用FileXXX一类的函数,可以定义一些中间变量保存它
们的返回值,关掉Optimization开关,一步一步设置断点,看问题出在哪儿。
 
谢谢kukosan 大哥,讲得这么清楚!
 
多人接受答案了。
 
后退
顶部