大家一定都知道TOpenDialog中的Files属性是记录在OpenDialog对话框内选中的那些文件的完整路径的信息。可是现在有一个特殊情况,真的是很特殊。情况如下:我使用的是Windows2000,我的Windows2000有多个用户,因此每个用户在Documents and Settings都有一个自己的文件夹,比如说一个用户Tom一个用户Mike,除此以外还有一个All Users的文件夹,放在All Users文件夹中“桌面”这个目录中的所有文件(比如说abc.txt文件)都会在用户Tom和用户Mike的桌面中出现,看上去好像是Tom和Mike放在桌面上的文件,其实不是。然而当使用TOpenDialog选中这种文件时,TOpenDialog.Files中保存的信息是“C:\Documents and Settings\Mike\桌面\abc.txt”(加入当前用户是Mike),这就不对了,真正的路径很明显是“C:\Documents and Settings\All Users\桌面\abc.txt”,于是程序就会因为找不到文件而出错,用户也会觉得迷惑,请问这个问题该怎么解决。问题比较长,请大家看清了问题再回答,谢了。

解决方案 »

  1.   

    朋友说的问题我理解了。
    刚开始我想这样解决,就是说打开一个文件之前就先判断一下all user里面有没有这个文件,如果有的话就打开all user里的同名文件,如果没有的话,就直接打开。
    可还是有问题,就是说他们可以同名的,你可以在all user里建一个abc.txt,然后再在桌面上建一个abc.txt,这时桌面上就会出现两个abc.txt的壮观景象,而用delphi拿文件名时,连同路径是完全一样的。晕!
      

  2.   

    期待高手解决!兄弟从不up,今天帮你up一下,呵呵。
      

  3.   

    to: killlaoli(菜鸟) 
    谢谢up,我发现如果你察看abc.txt文件的属性,其中显示的文件位置完全正确,的确是“C:\Documents and Settings\All Users\桌面\abc.txt”而非“C:\Documents and Settings\Mike\桌面\abc.txt”,这说明Windows一定有合适的API函数来得到确切的文件位置信息,我已经察看了FindFirstFile函数,结果返回值不对,我使用了extractfilepath结果也不对,真是失望阿。到底该怎么办呢?
      

  4.   

    已经测试过在Delphi7+WinXP下没有发现问题
    我没2000,没机会试
      

  5.   

    没有你说的那种问题,D6 + XP
      

  6.   

    我试过了,在2000中的确有这个问题。D6 + Win2000 pro sp2up! up! up! up!
      

  7.   

    to   SnowTopCh (哆来咪) and oracle_lover(数据库情人) 
    我昨天在D6 + Win2000(sp2)下就出现了楼主说的问题,今天因为别的原因,装了sp3,刚才回来看这个帖子,看到oracle_lover(数据库情人)的话,灵机一动,回头再一试,竟然没问题了,呵呵,巧合巧合。楼主快装sp3,问题一定能解决。
      

  8.   

    to:killlaoli(菜鸟)
    是吗,正好我这里有sp3就是嫌麻烦没有装阿,让我试试。:-)
      

  9.   

    to:killlaoli(菜鸟)
    我装了sp3,没用阿,TOpenDialog返回的还是错误的路径。
      

  10.   

    SnowTopCh(哆来咪),不应该啊,我原来在Win2000(sp2)下返回错误路径,Win2000(sp3)下就正确了,只可能是sp3的功劳啊。要不就是那天不小心踢了机箱一脚,给踢好了?我现在在Win2000(sp3)+ d6下,怎么也见不到错误的路径了............帮不了你了
      

  11.   

    1. 我装了sp3后,问题解决了。
    2. OpenDialog实际上调用的是Windows的打开文件对话框,所以我想问题应该是Windows的,而不是Delphi的。
      

  12.   

    to oracle_lover(数据库情人) 
    呵呵,终于有人证实俺不是瞎说了,建议楼主再装一遍sp3,还不行就重装2000,再装sp3,会行的,总会有那么一天的,会的,会的...
      

  13.   

    忘了写贴子地址了:-)
    http://expert.csdn.net/Expert/TopicView1.asp?id=1213463