路径不对!:((50分)

  • 主题发起人 主题发起人 iceiceberg
  • 开始时间 开始时间
I

iceiceberg

Unregistered / Unconfirmed
GUEST, unregistred user!
我把几个需要在程序中调用的图片放在了和程序相同的目录里,在delphi中编译通过,运行也正常。但是退出delphi后,直接运行project1.exe却提示:“无法找到c:/red.bmp”。这是为什么呢?要如何避免这种情况的发生?
 
把你怎么调图片的代码贴出来,就是那里出问题了。
 
你应该用GetCurrentDir函数获取当前目录,再加上图片文件名调用就可以了。
 
image1.picture.loadFromFile('red.bmp');
有错吗?
非得用GetCurrentDir 吗?那为什么在delphi中运行正常呢?
 
代码呢?
 
你的代码是从当前路径获取文件,如果程序中当前路径改变了,就不行了.
写成这样看看:
image1.picture.loadFromFile(Extractfilepath(application.exename)+'red.bmp');
 
var
sFile:String;
begin
sFile:=ExtractFilePath(Application.ExeName)+'/'+'red.bmp';
if FileExists(sFile) then
image1.Picture.LoadFromFile(sFile);
 
to wfzha:
当前路径是什么意思?我只是在d盘运行一下程序,怎么会莫名地去找c盘呢?
 
>>来自:thx1180, 时间:2003-8-11 23:33:00, ID:2101741
>>你应该用GetCurrentDir函数获取当前目录,再加上图片文件名调用就可以了。
嘿嘿,他老兄正好弄反了,你使用 image1.picture.loadFromFile('red.bmp');
就相当于从当前目录中寻找Red.BMP
要使用Application.ExeName的路径。这些楼上已经说了。

我要说的是,程序运行的时候都有一个缺省的当前路径,如果程序中没有更改路径操作,那么一般默认为程序所在路径,但是,如果你并不是通过双击文件运行的程序,而是通过快捷方式运行的,快捷方式有一个“起始位置”的选项,就是标志程序的当前目录的。

GetCurrentDir就是获取程序所在的当前位置的。
 
上机试了一下,如楼上几位所言。
我令sFile:=ExtractFilePath(application.ExeName);
再用image1.picture.loadFromFile(sFile+'red.bmp');
调用成功!(to lwluser:好象不用加 '/')
若使用GetCurrentDir,则又会去找c盘!

但是,开始时我是直接在文件夹里双击文件启动程序的,并没有使用桌面快捷方式。为什么这样当前目录会变成C:/呢?而在delphi中直接运行,当前目录则是程序所在路径。
 
有时使用路径对话框可以改变当前路径
 
太搞笑了吧!!我终于找到了问题的所在:我在文件夹里用“缩略图”模式浏览时,就会发生调用错误:can't open file:"c:/windows/Temporary Internet Files/red.bmp";而用别的模式(如小图标)浏览时,则调用正常!!这 也太夸张了吧。是不是winme的bug呀?
 
后退
顶部