gpt4 book ai didi

delphi - 简单的 TListView 保存文件和从文件加载(仅保存列字符串值)

转载 作者:行者123 更新时间:2023-12-02 01:44:13 24 4
gpt4 key购买 nike

我正在使用Delphi 2010,我在互联网上搜索并找到了一些示例,但它们都不起作用。我使用它可能是因为 2010 和 unicode?无论如何……

我正在寻找两个例程来为 TListView 进行简单的保存和加载到文件。我只对保存每列中的字符串值感兴趣。即标题和子项目。我对保存布局或任何对象不感兴趣。

procedure SaveToFile(const FileName: string);
procedure LoadFromFile(const FileName: string);

最佳答案

这是一些非常粗糙的东西。它使用相当有限的制表符分隔文本格式。内容不允许包含内联制表符。我还没有对加载函数执行任何错误检查。我相信您可以添加它。

uses
ComCtrls, Types, StrUtils;

procedure ListViewSaveToFile(ListView: TListView; const FileName: string);

procedure AddTextToLine(var Line: string; const Text: string);
begin
Line := Line + Text + #9;
end;

procedure MoveCompletedLineToList(const Strings: TStringList; var Line: string);
begin
Strings.Add(System.Copy(Line, 1, Length(Line)-1));//remove trailing tab
Line := '';
end;

var
Strings: TStringList;
LatestLine: string;
i, j: Integer;

begin
LatestLine := '';

Strings := TStringList.Create;
try
for i := 0 to ListView.Items.Count-1 do begin
AddTextToLine(LatestLine, ListView.Items[i].Caption);
for j := 0 to ListView.Items[i].SubItems.Count-1 do begin
AddTextToLine(LatestLine, ListView.Items[i].SubItems[j]);
end;
MoveCompletedLineToList(Strings, LatestLine);
end;
Strings.SaveToFile(FileName, TEncoding.UTF8);
finally
Strings.Free;
end;
end;

procedure ListViewLoadFromFile(ListView: TListView; const FileName: string);
var
Strings: TStringList;
i, j: Integer;
Fields: TStringDynArray;
Item: TListItem;
begin
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
ListView.Clear;
for i := 0 to Strings.Count-1 do begin
Fields := SplitString(Strings[i], #9);
Item := ListView.Items.Add;
Item.Caption := Fields[0];
for j := 1 to high(Fields) do begin
Item.SubItems.Add(Fields[j]);
end;
end;
finally
Strings.Free;
end;
end;

关于delphi - 简单的 TListView 保存文件和从文件加载(仅保存列字符串值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com