我的INI文件如下
 server.ini内容如下   
  [server]   
  ip=192.168.0.11
  port=8080读取配置文件代码如下:
 ip:=myinifile.ReadString('server','ip','127.0.0.1');
 port:=myinifile.ReadString('server','port','8080');   在其他系统中都能读取到IP=192.168.0.11,但是在windows 2003系统中却只能得到默认IP 127.0.0.1
有人碰到过类似问题吗?该怎么解决

解决方案 »

  1.   

    是不是你的路径有问题,找不到Ini文件
      

  2.   

     GetMem(FilePath,255);   
     GetModuleFileName(HInstance,FilePath,255);
     Filename:=ExtractFileDir(Filepath)+'\hdcv1.ini';
     myinifile:=Tinifile.Create(filename);
     ip:=myinifile.ReadString('server','ip','127.0.0.1');
     port:=myinifile.ReadString('server','port','8080');
      myinifile.Free;代码就这点,绝对不是路径的问题,而是跟2003这个操作系统有关系
      

  3.   

    我在win2003下读取ini文件正常
    我的代码如下,你参考一下:procedure TDM.DataModuleCreate(Sender: TObject);
    var
      tmpIni:TINIFile;
    begin
      tmpIni:=TIniFile.Create(extractfilepath(application.exename)+'config.ini');
      server:=tmpIni.ReadString('COMMON','HostAddress','127.0.0.1');
      dm.adoconnection1.Connected:=false;
      dm.adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=RC;Data Source='+''''+ server +'''';
      dm.adoconnection1.Connected:=true;
      tmpini.Free;
    end;config.ini内容如下  
    [common]
    HostAddress=192.168.1.188
      

  4.   

    忘记说了,有部分2003系统是正常的,好像是Windows 2003 R2以下的版本才有问题。
      

  5.   

    Filename:=ExtractFileDir(Filepath)+'\hdcv1.ini';你的server.ini文件呢?
      

  6.   

    写错了 呵呵 INI文件是hdcv1.ini' 不好意思
      

  7.   

    Filename:=extractfilepath(application.exename)+'\hdcv1.ini'; 
    myinifile:=Tinifile.Create(filename); 
    ip:=myinifile.ReadString('server','ip','127.0.0.1'); 
    port:=myinifile.ReadString('server','port','8080'); 
      myinifile.Free; 
    这样试试,GetModuleFileName先别用
      

  8.   

    Filename:=extractfilepath(application.exename)+'hdcv1.ini';//这个也才发现 
    myinifile:=Tinifile.Create(filename); 
    ip:=myinifile.ReadString('server','ip','127.0.0.1'); 
    port:=myinifile.ReadString('server','port','8080'); 
      myinifile.Free; 
    这样试试,GetModuleFileName先别用
      

  9.   

    必须使用GetModuleFileName,因为我这个是写成DLL的,需要给别的开发语言调用,比如PB VC等
    使用extractfilepath 就只能是被DELPHI调用了,而且我查看过取到的路径是对的
      

  10.   

    Filename:=ExtractFileDir(Filepath)+'\hdcv1.ini'; 
    改为
    Filename:=ExtractFileDir(Filepath)+'hdcv1.ini'; 若不行你可以试试我的代码
      

  11.   

    GetMem(FilePath,255);  
    GetModuleFileName(HInstance,FilePath,255); 
    Filename:=ExtractFileDir(Filepath)+'\hdcv1.ini'; 
    showmessage(filename);//我在这里加了提示,提示出来的路径是对的
    myinifile:=Tinifile.Create(filename); 
    ip:=myinifile.ReadString('server','ip','127.0.0.1'); 
    port:=myinifile.ReadString('server','port','8080'); 
      myinifile.Free; 主要问题就是这里读取配置文件只是在部分WINDOWS 2003版本上有问题,大概就是我们自己盗版的WINDOWS 2003版本,正版的WINDOWS 2003版本都是可以读取到的
      

  12.   

    如果实在不行的,那你就别用ini了,直接操作文本文件得了
      

  13.   

    呵呵 用文本文件不大好,因为我需要提供一个接口动态链接库给别的开发商,所以我给他的是一个DLL和一个INI文件,用文本就不好了
      

  14.   

    那应该是你操作系统的问题了
    若不想将来麻烦,那你现在应该重装win2003,最好是原版,不要GOST版或优化的
      

  15.   

    郁闷  原来不是读取配置文件有问题 而是后面连接webservice有问题,我另外开一帖子问问吧