【问题标题】:TStringList assign random value from the available values contained in a .ini fileTStringList 从 .ini 文件中包含的可用值中分配随机值
【发布时间】:2018-03-10 09:20:50
【问题描述】:

我有一个 .ini 文件,其中包含 10 个单词(每行 1 个单词)

在我的应用程序中,我使用以下代码将第一个单词分配给某事物:

value := somefilename.Strings[0]

因此,分配的单词是 .ini 文件中第一行的单词

我不想分配第一个单词,而是让它从 .ini 文件中的总共 10 个单词中随机分配一个。 似乎无法为此找到 stringlist 属性。

我该怎么做?

【问题讨论】:

  • 喜欢Value := SomeFileName.Strings[Random(SomeFileName.Strings.Count - 1)];(假设您在应用程序初始化时调用Randomize)?
  • @Victoria 在我的主表单末尾添加了initialization Randomize;(显然不在同一行,所以注释格式显示在同一行)。那样行吗?至今没用过这个。修改代码以反映您的示例,问题是我没有 Count 选项,只有 Strings 之后的 CountChar。
  • 啊哈,对不起,那就简单地做Value := SomeFileName[Random(SomeFileName.Count - 1)];(假设SomeFileNameTStringList类型的实例,或者TStrings后代)。从模块initialization 部分调用Randomize 很好。
  • @Victoria Perfect,就像一个魅力。谢谢,非常感谢。如果您愿意,可以将其作为答案,以便我接受。祝你有美好的一天!
  • 你是对的,我的错。应该是Random(SomeFileName.Count)

标签: delphi delphi-10.2-tokyo


【解决方案1】:

根据 David 和 Victoria 的 cmets,此代码非常理想。

Value := SomeFileName[Random(SomeFileName.Count)];

【讨论】:

  • 没有。恐怕是错的。你需要Random(SomeFileName.Count)
  • 你没有测试它。您没有测试是否可以返回所有可能的值。永远不会使用答案中的代码返回最后一个值。阅读文档。永远永远永远。阅读文档。
  • 如果列表只有两个元素,你就不会有随机性。把这些东西做好总是很重要的。
  • 我的反对票仍然存在,直到你投票为止。浏览有问题的代码。我们不需要看到任何错误的历史。您可以编辑答案以删除它们。为了任何未来的读者的利益。
  • 我只是这么说,并没有假设
猜你喜欢
  • 2016-01-09
  • 2012-10-15
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2014-02-20
  • 2020-06-22
相关资源
最近更新 更多