我在窗体创建的时候用Edit读了ini 一条纪录,窗体运行时没有问题,这时,我不进行任何操作,直接点击确定(就是将Edit中的纪录再次写回去)就报错,真是晕了,什么问题啊,个位高手指点啊。
谢谢

解决方案 »

  1.   

    估计是你在读取INI后随即把INI对象Free掉了吧,而按钮里又没有重新create
    没看到代码,只能估计
      

  2.   

    Edit1.Text:=ReadINI(IniFileName,'用户名','用户名');
    这句就是窗体创建时的 WriteINI(IniFileName,'用户名','用户名',Edit1.Text);
    这句就是点击确定后的
    我用的是动态连接库,没有自己建立ini文件,不知道是不是我用的方式不对,请高手指导,就这两句没有别的除了声明以外
      

  3.   

    楼主还是自己看一下DLL里的实现代码吧  我估计一定是粗心造成的错误.
      

  4.   

    既然楼主把六成的分都给了我,那我就要有一点感恩之心。下面这点资料希望对你有所帮助。1、http://community.csdn.net/Expert/topic/5224/5224079.xml?temp=.51835272、现写了一个小实例:uses IniFiles;
    ...procedure TForm1.Button1Click(Sender: TObject);
    var
       INI        : TiniFile;
       Fname, Str : String;
    begin
       Fname := ExtractFilePath(application.ExeName)+'setup.ini' ;
       INI := TINIfile.Create(Fname); //创建TINIfile实例,以读写位于程序目录下的setup.ini
       INI.WriteString('小节名','关键字','字串值');//向setup.ini写入或修改一个关键字
       Str := INI.ReadString('小节名','字段值','默认值');//因为INI还没有free掉,所以...见下面注释
       ShowMessage(Str);
       INI.Free;//及时释放你创建的INI实例
    end;{ 注:上边的代码里,因为你对INI的关键字的创建和修改动作,还没有真正写到磁盘文件里去,所以,立即进行读的操作,只能读出默认值。这是由于windows文件管理使用缓冲机制造成的。在windows里,对一个文件的操作,要在关闭这个文件之后才能生效。如:用rewrite写一个txt文件,再如,直接用assign打开打印机,操作都要在closefile之后才能生效。而对于TINIfile类来说,相应的操作就是free
    所以,用上面的代码写入关键字值后,再用下面的代码读出,就没问题了 }procedure TForm1.Button2Click(Sender: TObject);
    var
       INI        : TiniFile;
       Fname, Str : String;
    begin
       Fname := ExtractFilePath(application.ExeName)+'setup.ini' ;
       INI := TINIfile.Create(Fname);
       Str := INI.ReadString('小节名','关键字','默认值');
       showmessage(Str);
       INI.Free;
    end;用TINIfile类操作INI文件,与用Tregistry类操作注册表,基本是一样的。只能说这些了。