我在form.create()事件中写入
  setlength(cdir,144);
  if getcurrentdirectory(144,pchar(cdir))<>0 then
     begin
       setlength(cdir,strlen(pchar(cdir)));
       diredit.Text :=cdir+'\zipfile\';
     end;
用cdir来得到程序的目录,但第一次打开窗口时是对的,关闭后到其它窗口做了操作,再来打开窗口,得到的目录就不一样了,在程序运行过程中,程序的目录会发生改变吗?为什么会这样?

解决方案 »

  1.   

    我将程序关闭,重新运行又是对的。
    遇到的情况是cdir变成了根目录下第一个文件夹的目录。
      

  2.   

    那个函数是取当前工作目录,你切换窗口作了操作时,当前工作目录当然就变了.
    你想要作什么?不能用extractfilepath(Application.exename)吗?
      

  3.   

    切换窗口为什么会改变工作目录?我还是没有明白,extractfilepath(Application.exename)
    与getcurrentdirectory(144,pchar(cdir))两个函数不都是取得目录信息吗?有什么区别呢?
      

  4.   

    那是你可能在程序用到打开/保存之类的对话框.
    你可以把cdir设为一个全局变量,一开始让它保存最初值
      

  5.   

    如果只在本程序的其它窗口中做过事情,getcurrentdirectory(144,pchar(cdir))中的cdir会变吗?
      

  6.   

    (Application.exename)
    与getcurrentdirectory(144,pchar(cdir))两个函数一样的功能
      

  7.   

    Extractfilepath(Application.exename)

    GetCurrentDir函数
      

  8.   

    区别如下:Extractfilepath(Application.exename)   G:\DelphiPRJ\SQL\
    GetCurrentDir    G:\DelphiPRJ\SQL