掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewのファイルへの一括書込と読込をするには? (ID:14294)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ファイル名には、スペースを含んでいることがあるので Captionは 修正したほうがいいと思います。 function DoubleQuoteText(Text : String) : string; var s : string; i:integer; begin if (Pos(' ',Text)>0) or(Pos(',',Text)>0)or(Pos('"',Text)>0) then begin if Length(Text)>0 then for i := 1 to Length(Text) do if Text[i]='"' then s := s+ Text[i] + '"' else s := s+ Text[i]; Result := '"' +s+ '"'; end else Result := Text; end; procedure ListViewSaveToFile(aListView : TListView; Filename: string); var i : Integer; StrList :TStringList; begin StrList := TStringList.Create; try for i := 0 to aListView.Items.Count -1 do begin StrList.Add(DoubleQuoteText(aListView.Items[i].Caption) + ',' + aListView.Items[i].SubItems.CommaText); end; StrList.SaveToFile(Filename); finally StrList.Free; end; end; procedure ListViewLoadFromFile(aListView : TListView; Filename: string); var i , j , Max : Integer; StrList , StrList2 :TStringList; Str : string; NewItem : TListItem; begin StrList := TStringList.Create; try aListView.Clear; // クリア StrList.LoadFromFile(Filename); StrList2 := TStringList.Create; try Max := 0; for i := 0 to StrList.Count -1 do begin StrList2.CommaText := StrList.Strings[i]; NewItem := aListView.Items.Add; for j := 0 to StrList2.Count -1 do begin if (j = 0) then NewItem.Caption := StrList2.Strings[0] else NewItem.SubItems.Add(StrList2.Strings[j]); // 最大のSubItemsの個数を記録 if (Max < j) then Max := j; end; end; { // SubItemsの長さが足りない物があったら最大に調整 for i := 0 to aListView.Items.Count -1 do with aListView.Items[i].SubItems do if (Count < Max) then for j := Max - Count downto 1 do Add(''); } finally StrList2.Free; end; finally StrList.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ListViewSaveToFile(ListView1,'Temp.txt'); end; procedure TForm1.Button2Click(Sender: TObject); begin ListViewLoadFromFile(ListView1,'Temp.txt'); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.