敬问高手:
    小弟刚学Delphi,现在有一个TListView控件,我在程序里对它进行增加,删除操作,最后把结果保存进一个文本文件。
1,   现在发现增加值没有问题,我是这样做的:
   InputString1:= InputBox('输入单位代号', '单位代号', '');
   InputString2:= InputBox('输入单位名称', '单位名称', '');
   with listview1 do
   if (AnsiLastChar(InputString1)<>nil) and (AnsiLastChar(InputString2)<>nil) then
   begin     ListItem := Items.insert(selected.index);
     ListItem.Caption := InputString1;
     ListItem.SubItems.add(InputString2);
   end;2,但是如何取编辑后的各列值以便写进文本文件呢?
   我是这样做的:
var
    F :TextFile;
    s1:string[6];
    s2:string[40];
    i:integer;
    listitem:TListitem;
    AssignFile(F,'dwxx.txt');
    rewrite(F);
   with listview1 do
    begin
       if items.count >0 then
       for  i:=0 to items.count do
         begin
          listItem := Items.Add;
          listitem:=items.item[i];
          s1:=listitem.caption;
          s2:=listitem.SubItems.text;
          writeln(F,s1,s2);
         end;
    end;
但是这样就造成文本当中有空行,下次读文本文件时就把空行都读出来了。
请问如何解决?

解决方案 »

  1.   

    begin
           if items.count >0 then
           for  i:=0 to items.count do
             begin
              listItem := Items.Add;
              listitem:=items.item[i];
              s1:=listitem.caption;
              s2:=listitem.SubItems.text;
              writeln(F,s1,s2);
             end;
        end;
    改为:
       begin
            for  i:=0 to items.count-1 do
             begin
              listitem:=items[i];
              s1:=listitem.caption;
              s2:=listitem.SubItems.text;
              writeln(F,s1,s2);
             end;
        end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    按照lxpbuaa的代码写进文本文件后,为何再次读文本文件到listview中有空白行,即一行数据,加一个空白行,再有一行数据?
      

  3.   

    var
        F :TextFile;
        s1:string[6];
        s2:string[40];
        i:integer;
        listitem:TListitem;
        AssignFile(F,'dwxx.txt');
        rewrite(F);
       with listview1 do
        begin
           if items.count >0 then
           for  i:=0 to items.count-1 do
             begin
              listitem:=items.item[i];
              s1:=listitem.caption;
              s2:=listitem.SubItems.String[0];
              writeln(F,s1,s2);
             end;
        end;
      

  4.   

    rabbit0802(学习Delphi中) :
    因为writeln会写入换行符,所以你读的时候要判断是否读到了换行符,否则会有空白行—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————