我在form1添加的组件是:
TOpenDialog ,Name是OpenDialog1,
Tbutton , Name button1,
还有在form1的全局变量定义了个变量 BL:string;
在form1的OnCloseQuery事件写了一下代码(有引用inifiles单元),
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
ini:tinifile;
begin
  ini:=TIniFile.Create('.\File.ini');
        ini.WriteString('section','制作人',bl);
end;
Button1的代码是:
[code=Delphi(Pascal)]  if OpenDialog1.Execute then
  BL:=OpenDialog1.FileName;
  code]
我的目的是要退出窗体后保存变量“BL”盗File.ini这个问题。
主要问题:
要是我按了按钮选择了该程序下的文件,退出的时候就会把文件内保存file.ini文件,但是要是我选择了非该程序下的文件,就不会保存file.ini文件。请问该怎么解决这个问题(不会保存file.ini文件)?
我觉得这样说有点复杂,要是不嫌弃的话能否加加我的QQ(764801308)?我发源码给你看一下你应该会知道什么故障的乐(总之就是个INI文件的基本问题),不会浪费你多少时间的,加的时候请备注“INI”,麻烦你们了

解决方案 »

  1.   

    改这一句试试.
    ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'File.ini');
      

  2.   

    我的分析是,'.\File.ini'指定是的当前工作目录\File.ini,当你通过打开文件对话框选择文件时,会把工作目录指定到你所选择的位置,所以你要保存的File.ini文件被保存到的你选择的位置,而不是你所想要的本程序目录下,所以照如上改一改应该就行了.好像解释得也有点绕口...总之就是,要区分"程序当前目录"和"工作目录"这两个东西.
      

  3.   


    或者:procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    var
    ini:tinifile;
    begin
      SetCurrentDir(ExtractFilePath(ParamStr(0)));
      ini:=TIniFile.Create('.\File.ini');
            ini.WriteString('section','制作人',bl);
    end;