您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 160分我所有的分,全给了。delphi2009 opendialog问题

160分我所有的分,全给了。delphi2009 opendialog问题

来源:网络整理     时间:2016/7/3 0:11:16     关键词:

关于网友提出的“ 160分我所有的分,全给了。delphi2009 opendialog问题”问题疑问,本网通过在网上对“ 160分我所有的分,全给了。delphi2009 opendialog问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 160分我所有的分,全给了。delphi2009 opendialog问题
描述:

高手来帮我解决下啊。(我现在只能给100分的。不好意思,新手)
===========================
打开 DELPHI2009 新建一个From 然后放一个BUTTON和一个opendialog控件。
opendialog只设一个属性:ofAllowMultiSelect = True (允许多选)
----------------------------------------------------Button点击事件:
if OpenDialog1.Execute then
  showmessage(inttostr(opendialog1.Files.Count));
------------------------------------------------------
就这一行代码。。。
结果文件数不对?????怎么回事。
程序打开对话框后。我选择的是windows\system32\目录。然后ctrl+A
这时就会跳出一共多少个文件是吧。
手工去SYSTEM32目录查看得到的结果是:3420个文件,214个文件夹.
而这个ShowMessage得到的结果是:2319 ????何解??我全选所有文件类型的。
包括隐藏文件也是选了的。


解决方案1:

我在盒子已经回答你了
这个问题MSDN早就说的明明白白的:
OPENFILENAME 里面有个成员叫nMaxFile,是tchar,他表示一个文件的完整路径,如果这个路径超过预设范围就会跳过该文件,Delphi默认的这个值比较小,你去改大一些就没问题了
Delphi默认是260,对于 ANSI 版本,它指的是字节数。对于 Unicode 版本,它指的是字符数,该缓冲必须足够大才干存储文件的路径字符串,包含结尾空字符。
只要有一个文件超过了该缓冲区,那么就直接break了,后面所有文件都不会选中了
只要把这个值改大就可以了,这不是Delphi的错误,是windows默认的,我试过了,BCb,VC,C#都一样的,不修改都显示不正确


以上介绍了“ 160分我所有的分,全给了。delphi2009 opendialog问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2226807.html

相关图片

相关文章