将多个列表框值保存到单个文本文件中

时间:2019-01-30 17:30:40

标签: delphi

我在Delphi中做了一个小项目,但是在将多个列表框控件的项目保存到单个文件时遇到了问题。

我有4个列表框控件。保存按钮的代码为:

procedure TForm1.Button5Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    SaveDialog1.InitialDir := 'C:\MyProjects';

  ListBox1.Items.SaveToFile(SaveDialog1.FileName + '.txt');
end;

这是项目的图片:

image

保存后我的ini文件如下所示

    $       22/01/2019
25/01/2019
21/01/2019
$       22/01/2019
18/01/2019
06/01/2019
       15/01/2019
31/12/2018

1 个答案:

答案 0 :(得分:0)

SaveToFile()的{​​{1}}和LoadFromFile()方法不支持您要查找的内容。 TListBox.Items会覆盖现有文件,而SaveToFile()将按原样加载整个文件,因此不可能将多个列表框与它们一起存储到单个文件中。

您将需要更多地参与以自己的代码处理文件I / O。这意味着,您必须首先确定文件要使用的格式,然后才能为该格式编码。最重要的是文件的结构需要允许您区分哪些字符串属于哪个ListBox。

例如,您可以使用INI,XML,JSON等格式,其中有许多有用的类可用于它们,这些类既是Delphi本身的,也是3rd party的。并且有很多关于它们的文档和教程,因此在这里我将省略它们的代码示例。

例如:

INI

LoadFromFile()

XML

[ListBox1]
Count=...
Item1=...
Item2=...
Item3=...

[ListBox2]
Count=...
Item1=...
Item2=...
Item3=...

[ListBox3]
Count=...
Item1=...
Item2=...
Item3=...

[ListBox4]
Count=...
Item1=...
Item2=...
Item3=...

JSON

<lists>
  <list name="ListBox1">
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
  </list>
  <list name="ListBox2">
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
  </list>
  <list name="ListBox3">
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
  </list>
  <list name="ListBox4">
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
  </list>
</lists>

仅举几例。

或者,您可以设计自己的自定义文件格式来满足您的特定需求。例如:

{
  "ListBox1": [
    "...",
    "...",
    "..."
  ],
  "ListBox2": [
    "...",
    "...",
    "..."
  ],
  "ListBox3": [
    "...",
    "...",
    "..."
  ],
  "ListBox4": [
    "...",
    "...",
    "..."
  ]
}