listView保存为文件、载入文件

procedure saveListViewToFile(listview : TListView;fileName : string);
var
  item   : TListItem;
  Column : TListColumn;
  i ,j   : integer;
  line   : string;

  FileHandle : Integer;
  F:textfile;
begin
  if (listview = nil) then exit;
  if (listview.Items.Count <= 0) then exit;

  if FileExists(fileName)  then  DeleteFile(fileName);
  FileHandle := FileCreate(FileName);
  if (FileHandle <= 0) then exit;
  FileClose(FileHandle);

  assignFile(f,fileName);
  append(f);

  //保存标题
  line := '';
  for i := 0 to listview.Columns.Count -1 do
  begin
    Column := listview.Columns.Items[i];
    line := line + Column.Caption + #9;
  end;
  writeln(f,line);

  //保存数据
  for i := 0 to listview.Items.Count -1 do
  begin
    line := '';
    item := listview.Items.Item[i];
    line := item.Caption + #9;
    for j := 0 to item.SubItems.Count -1 do
    begin
      line := line + item.SubItems.Strings[j] + #9;
    end;
    writeln(f,line);
  end;

  closefile(f);
end;

procedure splitString(s : string;strlist : TStringList;splitTag : string);
var
  indexbegin ,i ,len : integer;
  str : string;
begin
  len := length(s);
  indexbegin := 1;
  for i := 1 to len do
  begin
    if copy(s,i,1) = splitTag then
    begin
      str :=copy(s,indexbegin,i - indexbegin);
      strlist.Add(str);
      indexbegin := i +1;
    end;
  end;
  strlist.Add(copy(s,indexbegin,len - indexbegin));
end;

procedure loadListViewFromFile(listview : TListView;fileName : string);
var
  item   : TListItem;
  Column : TListColumn;
  i ,j   : integer;
  line   : string;

  FileHandle : Integer;
  F:textfile;
  strlist : TStringList;
  splitTag : string;
begin
  if (listview = nil) then exit;
  if FileExists(fileName) = false then  exit;

  assignFile(f,fileName);
  Reset(f);

  //添加标题
  Readln(f,line);
  if line = '' then exit;

  strlist := TStringList.Create;

  splitTag := #9;
  Readln(f,line);
  while line <> '' do
  begin
    splitString(line,strlist,splitTag);
    item := listview.Items.Add;
    item.Caption := strlist[0];
    for j := 1 to strlist.Count -1 do
    begin
      item.SubItems.Add(strlist[j]);
    end;
    strlist.Clear();
    Readln(f,line);
  end;
  strList.Free;
end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值