奇怪的路径问题.读取程序所在目录下文件出错.(50分)

  • 主题发起人 少爷的拐杖
  • 开始时间

少爷的拐杖

Unregistered / Unconfirmed
GUEST, unregistred user!
我用如下的语句读取程序所在目录下的一个文件.
....LoadFromFile(ExtractFilePath(Application.ExeName) +
'PrintDoc/Add_Project.REP');
可是有时候会报错.说文件未找到,再次运行又可以了.难道这样使用有问题吗?
还有.我每次打开工程D5总说无法打开资源文件,可是并不影响使用.是不是因为使用
了32位颜色的图标的缘故?
谢谢
 
1.那么使用没有问题
2.工程文件没有.res,save all之后再打开就ok了
 
第一个问题好像没碰过。第二个可能是你开了防火墙,特别是金山毒霸,总是会这样,关闭就没事了。
 
1。打开的文件必须是文本文件。
2。res没有问题,是delphi的bug.
 
我是用KuBaKuBa大侠的EasyGrid读入一个表格文件出错的.
难道是控件本身的问题?
 
最后UP一下.没有新的见解明天结束.
 
我认为不要每次都用ExtractFilePath(Application.ExeName)
而是在主窗口Create事件中得到程序路径保存到变量里如strApp
然后再用strApp+'PrintDoc/Add_Project.REP',不过你要先判断
strApp的最后是否有'/',如果没有你要加上。我估计是你用了打开/保存
文件对话框控件,这控件能改变应用程序当前路径。
 
to yanghai0437:
我只所以每次都用ExtractFilePath(Application.ExeName) 就是怕因为当前路径改变
造成读取文件失败.而且程序中一个打开对话操作都没有.所以我感到十分奇怪.很想知道
为什么.
 
我知道为什么,与 luyear 在一年前讨论过这个问题。一个建议:不要用这个函数。
 
to 小雨哥:
说话不要说一半啊.既然知道为什么干脆说出来听听吗.
 
LoadFromFile(ExtractFilePath(Application.ExeName) + '/' + 'PrintDoc/Add_Project.REP'
 
唉,一般是不太会碰到的了。在 NTFS 才有可能,而且不是一定会出现。有什么好说的。
 
我也不用这个函数,我每次都是用的一个共用变量。如CurPath

在程序启动时用 GetDir(0,CurPath);

你不防也试试。

var
CurPath:string;
begin
GetDir(0,CurPath);
LoadFromFile(curPath + '/' + 'PrintDoc/Add_Project.REP')

end;
 
dlnew: 你反而给人家改错了, ExtractFilePath 返回值是带 '/' 的!
 
ExtractFilePath('c:/text.txt');时返回的就是c:而没有'/',所以请使用以下函数
function IncludeTrailingBackslash(const S: string): string;
它会在不是以'/'结尾的字符串后加上'/'。
 
beta:这两天我刚用过这个函数,不会错!
 
用findfirst()试试
 
结束问题,但是心中的疑问还是没有消除.
不论是采用GetDir(0,CurPath)还是ExtractFilePath(Application.ExeName) 方式
取得的路径是一样的.NTFS格式会出现倒有点可能,可是我只有C盘才是NTFS呀.
问题已挂多时,暂且结束.如果大家有了什么新的见解.请
TangX.13@163.com
谢谢
 
dlnew: 这个函数虽然我不是天天用,但是说周周用绝对不为过:)
他肯定带 '/' 的!

 
有没有'/',showmessage一下就全知道了,可能是我们用的版本不同吧!
 
顶部