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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    相对路径是路径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,是取得当前路径,当前路径不一定是主程序所在路径。比如在程序运行过程中通过其他方式进入了其他路径(如在资源管理器中浏览别的目录),此时当前路径就不是主程序所在路径了。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————