var
  AMIni:TIniFile; i:integer; DefSection:TStrings;
begin
  AMIni:=TIniFile.Create('setam.ini');
  DefSection:=TStringList.Create;
  DefSection.Text:=AmIni.ReadString('Server','defaultitem','');
  for i:= 0 to DefSection.count - 1 do
  showmessage(defsection[i]);
  defsection.free;
  amini.free;
end;[Server]
defaultitem='Host'#$D#$A'port'这样做为什么不可以啊???????????、
DefSection:TStrings中理论上应该是两个值Host和Server为什么,是一个字符串啊????

解决方案 »

  1.   

    o ,你加一个memo控件,随后将ini文件读到memo,再Tstring:=memo.text行么?
      

  2.   

    一个是pchar型的,一个是string的,用strpas函数就可以了Unit:
    SysUtilsfunction StrPas(const Str: PChar): string;
      

  3.   

    to:: shadowfish(<)<-<-<<死鱼<)<-<-<)TIniFile.ReadString(.....)的返回值是个String类型请问在哪个地方需要转换类型????
      

  4.   

    TIniFile.ReadString(.....)好象是一读就读出一行,直到有 #13为止
    我前段时间写程序也遇到ini文件的问题了
      

  5.   

    ghostmirror(mirror) 说的有道理,你应该把#$D#$A改成另外的字符,然后你通过自己的代码解析!
      

  6.   

    说说本意请大家提意见
    TSrings.txt把所有合并起来以#$D#$A来分隔。比如defaultitem='Host'#$D#$A'port'#$D#$A
    当我读到这样的一个字符串时就赋给TSrings.txt自动折分字符串分别就得到了一个Host和port字符串,这个想法没有问题吧?关于ini文件。ReadString(const Section, Ident, Default: String)
    现在是Ident不确定,即不知道有几个和他们的名字,
    所以就用了默认的defaultitem就是有一个Host和一个Port
    [Server]
    defaultitem='Host'#$D#$A'port'
    Host=127.0.0.1
    Port=20000假如在手动在ini文件中增加一个新值如下
    [Server]
    defaultitem='Host'#$D#$A'port'#$D#$A
    Host=127.0.0.1
    Port=20000
    computername=test//新增加的
    那就把defaultitem修改为
    defaultitem='Host'#$D#$A'port'#$D#$A'computername'#$D#$A
    这样在程序中读写文件的时就不需要知道Ident名字,这个功能已经实现了,用逗号或其它分隔符代替#$D#$A然后用程序截取就可以了。
    问一个在不知道Ident的情况下,还有没有更好的办法读写ini???
      

  7.   

    为什么DefSection:TStrings;不定义成string;
    用DefSection:=AmIni.ReadString('Server','defaultitem','');
    试试