源码如下,新建的一个测试工程,只有一个buttn
var str: string;
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
if FileExists(str) then
ShowMessage('ddd');
26 个解决方案
#1
检查一下ExtractFilePath(Application.ExeName) 后有没有‘\'。
你可以自己判断一下,没有'\'则加上。
还不行就可能确实没有那个文件了,你把str显示出来看看
你可以自己判断一下,没有'\'则加上。
还不行就可能确实没有那个文件了,你把str显示出来看看
#2
即使文件存在也得False,就是缺那个"\"
#3
我学才把你的代码调试过了,没出什么异常:
var
str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
if FileExists(str) then
ShowMessage(str)
else
ShowMessage('Not Exists');
end;
var
str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
if FileExists(str) then
ShowMessage(str)
else
ShowMessage('Not Exists');
end;
#4
我再次把这个生成的exe文件copy到win98、win2000、winXp的虚拟系统上进行调试。
一切运行正常。
一切运行正常。
#5
var str: string;
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//上面的函数返回的路径是带'/'的
showMessage(str); //看看路径是不是你要的再说
if FileExists(str) then
ShowMessage('ddd');
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//上面的函数返回的路径是带'/'的
showMessage(str); //看看路径是不是你要的再说
if FileExists(str) then
ShowMessage('ddd');
#6
look
#7
不会把
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//其中str的值如下
str:= 'C:\Documents and Settings\Administrator\My Documents\最近设计模板.dat';
if FileExists(str) then ShowMessage('ddd');
end;
文件最近设计模板.dat肯定存在的但是没有显示ShowMessage
郁闷ing
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//其中str的值如下
str:= 'C:\Documents and Settings\Administrator\My Documents\最近设计模板.dat';
if FileExists(str) then ShowMessage('ddd');
end;
文件最近设计模板.dat肯定存在的但是没有显示ShowMessage
郁闷ing
#8
你这个方法是否在类里面,而且该类有一个名为FileExists的子方法? 把上面的
if FileExists(str) then ShowMessage('ddd');
改成
if SysUtils.FileExists(str) then ShowMessage('ddd');
如果不行,确定你的"最近设计模板.dat"没被其它程序独占打开.
这是FileExists的源码:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
其实你可以自己改改的,自己做个FileExists更好,不用Delphi判断时间的这个,给人感觉效率不高.
if FileExists(str) then ShowMessage('ddd');
改成
if SysUtils.FileExists(str) then ShowMessage('ddd');
如果不行,确定你的"最近设计模板.dat"没被其它程序独占打开.
这是FileExists的源码:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
其实你可以自己改改的,自己做个FileExists更好,不用Delphi判断时间的这个,给人感觉效率不高.
#9
其实,FileAge函数有个很明显的bug,那就是,如果执行到
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
的话,函数体结束,但Result未初始化!可以是任意值~!
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
的话,函数体结束,但Result未初始化!可以是任意值~!
#10
你的代码没错,
ExtractFilePath(Application.ExeName)本身就是带“\”的,
肯定是你的输入的文件路径不对。
要不你设置资源管理器“显示完全路径”(文件选项中),然后从路径栏拷贝路径到你PAS文件中试试看。
要不你做下测试:
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);
if FileExists(str) then ShowMessage('ddd');
end;
ExtractFilePath(Application.ExeName)本身就是带“\”的,
肯定是你的输入的文件路径不对。
要不你设置资源管理器“显示完全路径”(文件选项中),然后从路径栏拷贝路径到你PAS文件中试试看。
要不你做下测试:
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);
if FileExists(str) then ShowMessage('ddd');
end;
#11
你的应用程序没放在
C:\Documents and Settings\Administrator\My Documents\
目录下吧。
C:\Documents and Settings\Administrator\My Documents\
目录下吧。
#12
要不将“C:\Documents and Settings\Administrator\My Documents\”
改为
“C:\Docume~1\Administrator\MyDocu~1\”试一下
改为
“C:\Docume~1\Administrator\MyDocu~1\”试一下
#13
先把路径SHOW出来看下对不对啊.
#14
关注
#15
这根我应用程序放在那个目录没关系,我用的是绝对路径也不行,你们做的都可以?我的开发环境是win2000 server delphi 6 delphi 7我都是过了不行。代码十分简单,新建的工程,就一个判断一个showmessage。TForm类中也没有FileExists方法。郁闷呀
#16
首先你要判断,ExtractFilePath(Application.ExeName)
最后一个字是否是"/"如果是则不用加,如果不是则要要加上
最后一个字是否是"/"如果是则不用加,如果不是则要要加上
#17
ExtractFilePath(Application.ExeName)是带'\'的
#18
倒 怎么解决这个问题呀,我是过了好多函数,英文名称的文件名都可以,中文文件名就不行。help help
#19
可能是对中文文件的支持问题,要不改成拼音缩写
#20
delphi代码中最好都用英文...
#21
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);//看看这里正确吗?
if FileExists(str) then ShowMessage('ddd');
end;
你先Message出来看看正确吗?在根据问题分析。
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);//看看这里正确吗?
if FileExists(str) then ShowMessage('ddd');
end;
你先Message出来看看正确吗?在根据问题分析。
#22
我也常用中文路径名,没遇到过这种情况,你的路径全名是什么,让我也试一下
#23
'D:\Documents and Settings\Administrator\My Documents\新建文件夹\最近设计模板.dcu' 文件名路径都是对的,主要是我必须用中文名,设计有点问题不想改,改动太大
#24
中文能有什么问题?
if FileExists('C:\Documents and Settings\Administrator\My Documents\新建文件夹\没有丑陋的女人只有贫穷的女人.JPG') then
Showmessage('1');
我试了的,都没错啊。你换台机器试试看
if FileExists('C:\Documents and Settings\Administrator\My Documents\新建文件夹\没有丑陋的女人只有贫穷的女人.JPG') then
Showmessage('1');
我试了的,都没错啊。你换台机器试试看
#25
楼主另新建一个工程试试,如果还是这样的话,就重装..,重装..
#26
很是对不起大家,小弟我那天喝多了,其实太简单了,我的文件名用了.dat.dat两个扩展名。很是抱歉,可惜能给的人数太少,就一百,如果给分数少了,联系我qq8528630,msn:xun_love@hotmail.com,msn比较常用。很是抱歉,哎............
#1
检查一下ExtractFilePath(Application.ExeName) 后有没有‘\'。
你可以自己判断一下,没有'\'则加上。
还不行就可能确实没有那个文件了,你把str显示出来看看
你可以自己判断一下,没有'\'则加上。
还不行就可能确实没有那个文件了,你把str显示出来看看
#2
即使文件存在也得False,就是缺那个"\"
#3
我学才把你的代码调试过了,没出什么异常:
var
str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
if FileExists(str) then
ShowMessage(str)
else
ShowMessage('Not Exists');
end;
var
str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
if FileExists(str) then
ShowMessage(str)
else
ShowMessage('Not Exists');
end;
#4
我再次把这个生成的exe文件copy到win98、win2000、winXp的虚拟系统上进行调试。
一切运行正常。
一切运行正常。
#5
var str: string;
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//上面的函数返回的路径是带'/'的
showMessage(str); //看看路径是不是你要的再说
if FileExists(str) then
ShowMessage('ddd');
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//上面的函数返回的路径是带'/'的
showMessage(str); //看看路径是不是你要的再说
if FileExists(str) then
ShowMessage('ddd');
#6
look
#7
不会把
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//其中str的值如下
str:= 'C:\Documents and Settings\Administrator\My Documents\最近设计模板.dat';
if FileExists(str) then ShowMessage('ddd');
end;
文件最近设计模板.dat肯定存在的但是没有显示ShowMessage
郁闷ing
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
//其中str的值如下
str:= 'C:\Documents and Settings\Administrator\My Documents\最近设计模板.dat';
if FileExists(str) then ShowMessage('ddd');
end;
文件最近设计模板.dat肯定存在的但是没有显示ShowMessage
郁闷ing
#8
你这个方法是否在类里面,而且该类有一个名为FileExists的子方法? 把上面的
if FileExists(str) then ShowMessage('ddd');
改成
if SysUtils.FileExists(str) then ShowMessage('ddd');
如果不行,确定你的"最近设计模板.dat"没被其它程序独占打开.
这是FileExists的源码:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
其实你可以自己改改的,自己做个FileExists更好,不用Delphi判断时间的这个,给人感觉效率不高.
if FileExists(str) then ShowMessage('ddd');
改成
if SysUtils.FileExists(str) then ShowMessage('ddd');
如果不行,确定你的"最近设计模板.dat"没被其它程序独占打开.
这是FileExists的源码:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
其实你可以自己改改的,自己做个FileExists更好,不用Delphi判断时间的这个,给人感觉效率不高.
#9
其实,FileAge函数有个很明显的bug,那就是,如果执行到
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
的话,函数体结束,但Result未初始化!可以是任意值~!
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
的话,函数体结束,但Result未初始化!可以是任意值~!
#10
你的代码没错,
ExtractFilePath(Application.ExeName)本身就是带“\”的,
肯定是你的输入的文件路径不对。
要不你设置资源管理器“显示完全路径”(文件选项中),然后从路径栏拷贝路径到你PAS文件中试试看。
要不你做下测试:
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);
if FileExists(str) then ShowMessage('ddd');
end;
ExtractFilePath(Application.ExeName)本身就是带“\”的,
肯定是你的输入的文件路径不对。
要不你设置资源管理器“显示完全路径”(文件选项中),然后从路径栏拷贝路径到你PAS文件中试试看。
要不你做下测试:
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);
if FileExists(str) then ShowMessage('ddd');
end;
#11
你的应用程序没放在
C:\Documents and Settings\Administrator\My Documents\
目录下吧。
C:\Documents and Settings\Administrator\My Documents\
目录下吧。
#12
要不将“C:\Documents and Settings\Administrator\My Documents\”
改为
“C:\Docume~1\Administrator\MyDocu~1\”试一下
改为
“C:\Docume~1\Administrator\MyDocu~1\”试一下
#13
先把路径SHOW出来看下对不对啊.
#14
关注
#15
这根我应用程序放在那个目录没关系,我用的是绝对路径也不行,你们做的都可以?我的开发环境是win2000 server delphi 6 delphi 7我都是过了不行。代码十分简单,新建的工程,就一个判断一个showmessage。TForm类中也没有FileExists方法。郁闷呀
#16
首先你要判断,ExtractFilePath(Application.ExeName)
最后一个字是否是"/"如果是则不用加,如果不是则要要加上
最后一个字是否是"/"如果是则不用加,如果不是则要要加上
#17
ExtractFilePath(Application.ExeName)是带'\'的
#18
倒 怎么解决这个问题呀,我是过了好多函数,英文名称的文件名都可以,中文文件名就不行。help help
#19
可能是对中文文件的支持问题,要不改成拼音缩写
#20
delphi代码中最好都用英文...
#21
var str: string;
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);//看看这里正确吗?
if FileExists(str) then ShowMessage('ddd');
end;
你先Message出来看看正确吗?在根据问题分析。
begin
str:= ExtractFilePath(Application.ExeName) + '最近设计模板.dat';
ShowMesage(str);//看看这里正确吗?
if FileExists(str) then ShowMessage('ddd');
end;
你先Message出来看看正确吗?在根据问题分析。
#22
我也常用中文路径名,没遇到过这种情况,你的路径全名是什么,让我也试一下
#23
'D:\Documents and Settings\Administrator\My Documents\新建文件夹\最近设计模板.dcu' 文件名路径都是对的,主要是我必须用中文名,设计有点问题不想改,改动太大
#24
中文能有什么问题?
if FileExists('C:\Documents and Settings\Administrator\My Documents\新建文件夹\没有丑陋的女人只有贫穷的女人.JPG') then
Showmessage('1');
我试了的,都没错啊。你换台机器试试看
if FileExists('C:\Documents and Settings\Administrator\My Documents\新建文件夹\没有丑陋的女人只有贫穷的女人.JPG') then
Showmessage('1');
我试了的,都没错啊。你换台机器试试看
#25
楼主另新建一个工程试试,如果还是这样的话,就重装..,重装..
#26
很是对不起大家,小弟我那天喝多了,其实太简单了,我的文件名用了.dat.dat两个扩展名。很是抱歉,可惜能给的人数太少,就一百,如果给分数少了,联系我qq8528630,msn:xun_love@hotmail.com,msn比较常用。很是抱歉,哎............