收录日期:2018/05/22 08:50:00 时间:2016/05/20 18:28:04 标签:VCL组件开发及应用
有什么简单方法可以将listview里面的记录保存到文件中?
可以声明一个数组,首先获取Listview.items,然后把它付给数组
我想保存成tab分隔的文件。然后能够读出来,写到listveiw中去。大家有何好办法?谢谢
TListView->TStream->Raw Data Buffer->File
欢迎讨论
这应该是比较容易解决的问题.

定义一个TStringList, 然后把ListView中的数据一行行写入到TstringList中保存即可.

var
  strList : TStringList;
  i : integer;
begin
  strList := TStringList.Creat;
  for i:=0 to ListView.Items.count-1 do
  begin
    strList.add(ListView.items[i].Caption+'^'+(ListView.items[i].SubItems.string[i]);
   ...
  end;
  strList.SaveToFile('c:\temp.txt');
  strList.free;
end;

读出时再按保存时的格式读出...

你 逐条记录的读取数据,然后读完一条后就写如文件啊 ;
因为:listview中是分列的,所以一条记录,你也可以逐列的读取啊
tab其值为#9
var list:tstringlist;i,j:integer;
begin
list:=tstringlist.create;
for i:=0 to listview.items.count-1 do 
  begin
   list.add(listview.items[i].caption);
    for j:=0 to listview.items[i].subitems.count-1 do
     list.add(#9+listview.items[i].subitem[j]);
   end;
 list.free;
end
sorry,忘记了,list.free前加上一句list.savetofile('*.txt');
谢谢。如果从文件里面读的话,是否应该是一行行读,然后分离,然后再赋值到listview中去?
要学会使用TStringList;

TStringList太好用了...

var
  strList : TStringList;
begin
  strList := TStringList.Creat;
  strList.LoadFromFile('你保存的文件');
  //接下来就是对strList的操作了,简单吧.
end;
读的时候前面没有tab的就是caption,有tab的就是subitem