例如我用RichEdit往ini里寫入3行字符,假設是1,2,3 。
用關鍵字(Test)寫入,在ini小節下面顯示如下
Test=1
2
3
但是我再想將小節下面的全部3行字符一起讀取出來,卻不行。只能讀出帶關鍵字的第一行。
我現在想將3行一次性讀出到RichEdit里,要怎麼寫。
請各位指教,非常感謝!

解决方案 »

  1.   

    这样使用tinifile是无法读出来的,tinifile读到换行符就返回了,这是ini文件的读写约定,可以把123写成一行例如
    Test=1|2|3
    读取后再以“|”分割,也可以直接打开ini文件一行一行的读,不使用tinifile
      

  2.   


    begin
      richedit1.lines.loadfromfile('your.ini');
    end;
      

  3.   

    如果确实需要读写 ini 格式,你可以用 WriteBinaryStream/ReadBinaryStream
      

  4.   


    如果不用ini,其他什麽方法可以實現類似功能?
      

  5.   

    用读文件的方法,或者把文件一次性地诗篇到TStringList变量中
    然后一行一行的循环判断,其实主要判断是否有=号,有=号即为小节所在行,取得要读的小节的所在的行,然后往下依次读取判断即可
      

  6.   


    var IniFile: TIniFile;
        sTemp: String;
    begin
      IniFile := TIniFile.Create('FileName');
      try
        sTemp := '1' + sLineBreak + '2' + sLineBreak + '3';
        // Save
        IniFile.WriteString('Section', 'Test', StringReplace(sTemp, sLineBreak, '|', [rfReplaceAll]));
        // Load
        sTemp := StringReplace(IniFile.ReadString('Section', 'Test', ''), '|', sLineBreak, [rfReplaceAll]);
      finally
        IniFile.Free;
      end;
    end;
      

  7.   

    其实,XML 是个不错的选择。它有着 INI 文件一样的方便读写。而且没有单个长度限制,INI 单个 item 好像有 255 个字符限制。
      

  8.   


    {
    fileName.ini
    [test]
    1
    2
    3
    }
    var
      Ini : TMemIniFile;
      tempList : TStringList;
    begin
      Ini := TMemIniFile.Create('fileName.ini');
      tempList := TStringList.Create;
      Ini.ReadSectionValues('test', tempList);
      Ini.Free;  Memo1.Lines.Assign(tempList);
      tempList.Free;
      

  9.   

    没用的,和楼主示范数据虽然少个=号,但是结果就是天渊之别。
    其实我上面说的使用 ini 的 riteBinaryStream/ReadBinaryStream 完全满足了楼主的要求。
      

  10.   

    建议使用文本文件,对文本文件的读写是一次性的,而ini文件的读写是多次性的,即每一条信息,就“打开、读写、关闭”一个轮回,速度慢。当遇到杀病毒软件,检测磁盘读写操作时,如果检测一条用时0.1秒,10条就是1秒。非常烦人。
      

  11.   

    采用Tmeminifile,效率高,且几乎没有任何限制(255字符、64k之类)多行的值,需要编码(以“|”、“,”或其它不常见的字符或字符串代替换行)后变为单行的字符串以保存
    或者采用:
    linecount=3
    line1=1
    line2=2
    line3=3
    再写过专门读取这种类型的函数,就可以了