怎样将listview中的内容保存到一个文本文件中?
我想将中listview的文件名保存到一个TXT文件中,如下格式,另外怎样将TXT文件中的内容反读到listview中呢例子:
C:\My Documents\aaa.ico
D:\Netlog.txt
C:\Program Files\WinRAR.exe

解决方案 »

  1.   

    var ss:TStringList ;
        i: integer;
        li:TListItem;
    ss:=TStringList.Create();
    ss.LoadFormFile("wj.txt");
    for i:=0 to ss.Count-1 do
    begin
      li:=ListView1.items.add;
      li.Caption:=ss.Strings[i];  
    end;
    ss.free;
      

  2.   

    我发现一个很奇怪的现象,已经纳闷很久了,我知道问出来可能有点失礼,但是还是忍不住了.
    你们的星星都很多,应该是回答了别人很多问题了,这样看来你们的水平应该很不错才是,但是为什么你自己问的问题却都是如此低级呢?
    真是报歉,我比较直率了一点.话说回来,您的问题真的比较简单,无非是把LV中的一个item作为一行,然后把item.caption和item.subitems[]中间加上分隔符作为一个字串一行行写入就行了;读文件一行行读入,然后用分隔符把每段找出重新写回LV就行了.
      

  3.   

    to: sunware() 
    我也感觉很奇怪。
      

  4.   

    如果只有1列的话可用myy() 的方法。
    如果是多列的话可用TIniFile把listitem.catpion存为Section
    把listitem.subitems存为Key
    结构如下
    [Section1]
    key1
    key2
    ...
    [Section2]
    key1
    key2
    ...读取如下,保存同理。
    var
      AppIni: TIniFile;
      LI:TListItem;
      s:stringlist;
      i:integer;
    begin
      AppIni := TIniFile.Create('Example.INI');
      s:=tstringlist.create;
      AppIni.ReadSections(s);
      for i:=0 to s.count-1 do
      begin
        li:=ListView1.items.add;
        li.Caption:=s.Strings[i];  
        AppIni.ReadSection(s.name[i],li.subitems);   
      end;
      s.free;
      AppIni.Free;
    end;
      

  5.   

    d983074(d983074的解决办法的确另辟蹊径!说实话,今天上午刚作了一个,不过是把LV的内容复制到Clipboard然后再从clipboard粘贴回来,和你的差不多,但我只用了tstringlist(tstringlist中自带savetofile,所以你的问题也容易解决).
    速度很快.代码在单位,没有拿回家来,而我单位的机器不能上网,所以现在稍写一下:1、保存:
    var
    i,j : integer;
    s : string;
    ts : tstringlist;
    begin
    ts := tstringlist.create;
    with listview1 do begin
    for i := 0 to items.count -1 do begin
    s := items[i].caption;
    for j := 1 to Columns.Count -1 do begin
    s := s +'^'+items[i].subitems[j-1];
    end;
    ts.add(s);
    end;
    ts.savetofile('log1.log');
    ts.free;
    end;2、读取
    两个过程:
    a.procedure GetItems(s : string;var aList : array of string);
    var
    p,i : integer;
    begin
    i := -1;
    s := s +'^';
    repeat
    p := pos('^',s);
    if p > 0 then begin
    Inc(i);
    aList(i) := copy(s,1,p-1);
    s := copy(s,p+1,length(s)-p);
    end;
    until(p=0);
    end;b:LoadFromFile(FileName : string);
    var
    aItem : TListItem;
    i,j : integer;
    ts : tstringlist;
    alist : array[0..COLUMNS] of string;
    begin
    ts := tstringlist.create;
    ts.loadfromfile(FileName);
    ListView1.Items.BeginUpdate;
    for i := 0 to ts.count -1 do begin
    aItem := ListView1.Items.Add;
    GetItems(ts[i],aList);
    aItems.caption := alist[0];
    for j := 1 to listview1.columns.count -1 do
    aItems.SubItems.Add(aList[j]);
    end;
    ListView1.Items.EndUpdate;
    ts.Free;
    end;自己凭印象写的,没有检查过,可能有错误,请核对一下。
    这样的好处是,这样生成的文件很容易变成表格。
      

  6.   

    listview我记得有个SAVETOFILE的方法啊,我记得;LOADFROMFILE也应该有;
      

  7.   

    根据 sunware() 的保存代码,试试下面的读取过程
    procedure LoadToListView(LV:TListView);
    var
        temp:string;
        sl:TstringList;
        i,j:integer;
    begin
        sl:=TstringList.create;
        sl.LoadFromFile('e:\aaaa.txt');
        for i:=0 to sl.Count-1 do
        begin
            LV.Items.Add;
            temp:=sl[i];
            j:=pos('^',temp);
            while j<>0 do
            begin
               if LV.Items[i].Caption='' then
                  LV.Items[i].Caption:=copy(temp,0,j-1)
               else
                  LV.Items[i].SubItems.Add(copy(temp,0,j-1));
               delete(temp,1,j);
               j:=pos('^',temp);
            end;
            LV.Items[i].SubItems.Add(temp);
        end;
    end;