2008年8月31日星期日

Delphi中怎样获取相对路径?

我一向用类似于“.\MyDir\”的方法写相对路径,最近发现这样的写法中的“.”代表的是当前打开的文件夹,并不一定是主程序所在的文件夹。后用类似于“\MyDir\”和“MyDir\”的写法,都没有得到想要的结果。
哪位大虾能将相对路径详细的解释一下?万分感激!

===============

主程序所在文件夹
var
FileName : String; //主程序所在文件夹
begin
FileName := ExtractFilePath(ParamStr(0));
end;

===============

var
FileName : String; //主程序所在文件夹
begin
FileName := ExtractFilePath(Application.ExeName);
end;

=================
或者GetCurrentDir();也可以,二者只有一个'\'的差别

===============
ExtractFileDir(application.ExeName)或ExtractFilePath(application.ExeName),后者有"\"符号,而前者没有!

====================
相对路径是路径A相对于路径B而言的,如
A: c:\a\b
B: c:\a\b\c
那么A相对于B的路径(即相对路径)是‘..\b’。这个应该很好理解。Delphi提供一个函数用来取得相对路径:
function ExtractRelativePath(const BaseName, DestName: string): string;
如:
ExtractRelativePath(B, A)表示A相对于B的路径,返回‘..\b’。
取得主程序所在路径可用:
ExtractFilePath(ParamStr(0));或者
ExtractFilePath(Application.ExeName);
至于GetCurrentDir,是取得当前路径,当前路径不一定是主程序所在路径。比如在程序运行过程中通过其他方式进入了其他路径(如在资源管理器中浏览别的目录),此时当前路径就不是主程序所在路径了。

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————

没有评论: