【delphi】调用自定义函数出现invalid pointer operation错误

不调用此自定义函数时一切正常。函数的作用仅仅是判断一下新建的文件与已有的文件是否重名。

经本机代码测试,没有遇到类似的故障,估计跟 delphi 特定的版本有关。


但貌似代码中有处小 bug:


  SetLength(j,Form1.FileListBox1.Count-1);


上面的代码是设置了动态数组 j 的长度,但貌似不应该减1,FileListBox1.Count 获取的是文件的列表总数,从代码来看,不需要减1。(如果减1,在做循环判断时,会少了一次文件名对比,而且 Invalid Pointer opration 的错误,可能就是少一个元素导致的。)


从 RepeatNameJudge 的设计功用来看,代码写的太复杂,建议可以考虑 FileExits 函数。


此外,对于 windows 系统来说,字母大小写是不敏感的,Unit.pas 与 unit.pas 是一个文件,而从代码看:


if newname=Form1.FileListBox1.Items[i]


会导致 Unit.pas 与 unit.pas 没有重复:


温馨提示:答案为网友推荐,仅供参考
相似回答