delphi - Delphi中音乐播放器的播放列表/多个数据项列表

标签 delphi string sorting pascal playlist

我想在 Delphi/Pascal 中为我自己的音乐播放器创建一个播放列表。

我认为拥有一个包含 MP3 文件路径的 TStringList 以及一个包含歌曲名称的 TListBox 将是最好的解决方案。两个列表中的匹配字符串必须位于同一位置。因此,如果用户在 TListBox 中选择第 5 项,我就可以采用 TStringList 中位置 5 处的路径。

这很好用。

但现在我需要一个包含两列的播放列表:“艺术家”和“歌曲标题”。您应该能够按艺术家(升序和降序)以及歌曲标题(升序和降序)对播放列表进行排序 - 当然,按字母顺序排列。

我怎样才能做到这一点?有两个 TStringList 对象 - 一个按艺术家排序,另一个按歌曲标题排序?

最佳答案

我会创建一个至少包含 Artist 和 Title 属性的 TSong 类,以及一个使用正确的排序字段提供 1 个或多个排序方法(可以是通用的)的 TSongList。
当然不需要维护 2 个必须管理的独立 StringList,在排序时保持同步和重新洗牌...

一种实现这一点的廉价方法可能是拥有一个内存数据集,其中包含显示在网格中的艺术家和路径的记录,您可以在不同的列上进行排序。
当前行将直接给出这两个信息。

关于delphi - Delphi中音乐播放器的播放列表/多个数据项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259537/

相关文章:

delphi - 我如何确定抽象方法是否已实现?

javascript - 使用 JavaScript 中的 bool 属性对复杂的对象数组进行排序

javascript - 如何按百分比等计算字段对 javascript 中的数组进行排序

delphi - 使用 FastMM4 和 Indy 10

德尔福 7 : how to execute shell command and check the result?

android - 如何使用 OAuth 2.0 从 Indy 发送 Gmail?

ruby-on-rails - string vs text using Rails 3.2.* and Postgres - 我应该总是只使用文本吗

c++ - 如何使用 C++ 剪切或删除字符串中的某些字符

r 使用模式更改列名称的列类型

javascript - MySQL 中的日期格式用于通过 AngularJS 日期过滤器进行过滤