哪些列表可以作为临时列表?

2024-02-07

当处理项目列表时,列表仅充当暂时的容器 - 您建议我使用哪些列表类型?

I

  • 不想手动销毁列表
  • 想要使用built-in列表类型(无框架、库……)
  • 想要仿制药

可以在不导致泄漏的情况下实现这一点的东西:

function GetListWithItems: ISomeList;
begin
  Result := TSomeList.Create;
  // add items to list
end;

var
  Item: TSomeType;
begin
  for Item in GetListWithItems do
  begin
    // do something
  end;
end;

我有什么选择?这是关于 Delphi 2009 的内容,但为了了解知识,还请提及 2010+ 在这方面是否有新内容。


一个(有点丑陋的)解决方法是创建一个“自动销毁”界面以及列表。它必须具有相同的范围,以便当接口被释放时,您的列表也会被销毁。

type
  IAutoDestroyObject = interface
  end;

  TAutoDestroyObject = class(TInterfacedObject, IAutoDestroyObject)
  strict private
    FValue: TObject;
  public
    constructor Create(obj: TObject);
    destructor  Destroy; override;
  end;

constructor TAutoDestroyObject.Create(obj: TObject);
begin
  inherited Create;
  FValue := obj;
end; 

destructor TAutoDestroyObject.Destroy;
begin
  FreeAndNil(FValue);
  inherited;
end;

function CreateAutoDestroyObject(obj: TObject): IAutoDestroyObject;
begin
  Result := TAutoDestroyObject.Create(obj);
end; 

FList := TObjectList.Create;
FListAutoDestroy := CreateAutoDestroyObject(FList);

您的使用示例也变得更加复杂。

type
  TSomeListWrap = record
    List: TSomeList;
    AutoDestroy: IAutoDestroyObject;
  end;

function GetListWithItems: TSomeListWrap;
begin
  Result.List := TSomeList.Create;
  Result.AutoDestroy := CreateAutoDestroyObject(Result.List);
  // add items to list
end;

var
  Item: TSomeItem;
begin
  for Item in GetListWithItems.List do
  begin
    // do something
  end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些列表可以作为临时列表? 的相关文章

  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • Python:两个列表之间的成对比较:列表 a >= 列表 b?

    如果我想检查列表中的所有元素 a 1 2 3 6 大于或等于另一个列表中对应的元素 b 0 2 3 5 如果 a i gt b i 对于所有i的 则返回 true 否则返回 false 这有逻辑功能吗 比如a gt b 谢谢 你可以这样做
  • 如何在 Python 中连接两个列表?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如何在 Python 中连接两个列表 Example listone 1 2 3 lis
  • Python-使用元组作为列表索引[重复]

    这个问题在这里已经有答案了 我有一个元组列表 tuples list 1 0 2 3 3 2 2 0 我想访问二维数组的元素a例如 使用其中一些元组 for i in range 3 print a tuples list i 应该输出的值
  • 在TImageViewer中,如何获取用户点击图片的位置?

    在TImageViewer控件中 用户可以缩放或平移图片 我的问题是 当用户点击图片时 如何获取用户在图片上的点击位置 尤其是用户可以对图片进行放大 缩小或平移之后 如何获取对应的图片点击位置呢 As shown below How to
  • python中的列表列表的集合

    我有一个列表列表 mat 1 2 3 4 5 6 1 2 3 7 8 9 4 5 6 我想转换成set即删除重复列表并从中创建一个新列表 其中仅包含unique lists 在上述情况下 所需的答案将是 1 2 3 4 5 6 7 8 9
  • 如何从Python列表中的字符串中删除双引号?

    我正在尝试在字典列表中获取一些数据 数据来自 csv 文件 因此都是字符串 文件中的键都有双引号 但由于这些都是字符串 我想删除它们 这样它们在字典中看起来像这样 key value 而不是这个 key value 我尝试简单地使用 str
  • 分配列表的多个值

    我很想知道是否有一种 Pythonic 方式将列表中的值分配给元素 为了更清楚 我要求这样的事情 myList 3 5 7 2 a b c d something myList So that a 3 b 5 c 7 d 2 我正在寻找比手
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 使用 for 循环填充 python 字典列表

    我试图用 for 循环填充字典列表 但最终结果显示 for 循环填充的最后一个字典覆盖了所有先前字典的值 我尝试调整以下中提出的解决方案 如何使用循环填充 Python 字典 https stackoverflow com question
  • Delphi 流畅的界面

    使用上有什么优点和缺点流畅的界面 http en wikipedia org wiki Fluent interface在德尔福 流畅的界面应该会增加可读性 但我对此有点怀疑one包含很多链式方法的长 LOC 是否存在编译器问题 是否存在任
  • Delphi:写入后代类中私有祖先的字段

    我需要修复第三方组件 该组件的类具有私有变量 该变量由其后代主动使用 TThirdPartyComponentBase class private FSomeVar Integer public end TThirdPartyCompone
  • 是否可以声明长度受限且不从 0/1 开始的字符串类型?

    在 Delphi 中 可以声明整数值的子范围 例如 type myInt 2 150 它将 myInt 类型的值限制为 2 到 150 之间的值 但是如果我想限制字符串的长度怎么办 如果我写 type myString string 150
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • Collections.sort(list) 和 list.sort(Comparator) 之间的区别

    有什么理由让我应该选择Collections sort list 方法而不是简单地调用list sort 内部Collections sort只是调用sort的方法List无论如何 上课 令人惊讶的是几乎每个人都告诉我使用Collectio
  • 打印 TDBGrid [重复]

    这个问题在这里已经有答案了 如何在不安装或下载组件的情况下打印 DBGrid OR 如何将 DBGrid 的数据放入 RichEdit 以便我可以从那里打印它 数据感知控件从 DataSource 属性获取数据 并使用它 不过 您必须手动遍
  • 如何在 flutter 中仅显示列表中的 5 项

    我想在 flutter 中显示一个列表 我正在使用listView 问题是我只想显示 5 个项目 我的意思是当用户向下滚动时我想从开始索引中删除并将另一个小部件添加到包含我的小部件的列表的末尾 但是当我这样做时ScrollView 不会停留
  • 两个布尔列表之间的逻辑运算

    我得到了一个奇怪的结果 我尝试应用and or the orpython 中 2 个布尔列表的运算符 事实上 我得到的结果与我的预期完全相反 True False False and True True False gt True True

随机推荐

  • Flutter:将应用程序作为后台服务运行

    我想在用户断开蜂窝呼叫时显示自定义弹出消息 问题是如何检测应用程序何时未运行 任何线索都会有帮助 已经有一段时间了 有很多进展 首先 有一些答案如何在 Flutter 中创建服务以使应用程序始终在后台运行 https stackoverfl
  • postgresql 中明显的事务隔离违规

    我在 CentOS Linux 上使用 PostgreSQL 9 3 12 我有两个进程连接到同一个数据库 使用默认事务隔离级别 读已提交 根据 postgres 文档 事务中的一个进程在提交之前不应 看到 事务中另一进程所做的更改 我看到
  • 方法、常量、变量和字段的奇异名称 - 错误还是功能?

    在评论中出现一些混乱之后 PHP 中使用 1 个字母的类名是否安全 例如 A B C https stackoverflow com questions 3416551 is it safe to have 1 letter class n
  • 如何通过 PowerShell 获取在线文件的文件大小?

    我正在尝试编写一个执行以下操作的 PowerShell 脚本 检查PC上是否存在特定文件 如果存在 则将本地文件大小与在线文件大小进行比较 如果在线文件大小大于本地文件大小 请下载该文件 检查是否有更新版本 如果不存在 请从网站下载该文件
  • SSIS - 动态地将文件移动到具有匹配子字符串名称的文件夹

    我正在使用 foreach 循环和文件系统任务将文件移动到特定文件夹中 或至少尝试这样做 i e 文件名可以是100000 需要到文件夹1000 文件102000需要转到文件夹1020 文件103000需要转到文件夹1030 ETC ETC
  • 如果我使用 Glad 而不是 GLEW,我会错过什么吗?

    我想使用 OpenGL 但我不知道如何设置 GLEW 如果我要使用 Glad 我会失去一些东西吗 我可以从使用 GLEW 的教程中学习吗 如果您开始在桌面平台上使用 OpenGL 进行编程 那么任何一种都可以工作 并且选择并不那么重要 稍后
  • Python shift() 从同一列,就像 Excel 中的日期一样

    我想在 python 中创建 target start 列 id start end diff target start 12220 1999 11 22 2008 08 31 3515 1999 11 22 12220 2018 04 1
  • c# - 如何以编程方式检查解决方案中的引用是否配置正确

    我们遇到了一些构建错误 需要手动修复引用 我想以编程方式检查是否定义了项目引用而不是 dll 引用 因此 请检查解决方案中的所有引用 并针对每个项目检查引用的定义是否正确 这样相关的依赖就会被正确配置 有人知道现有的解决方案吗 我想要一个在
  • 如何将WPF动画逐帧渲染为视频?

    我在 WPF 中创建了一个我喜欢的很好的效果 我希望能够 记录 这个效果 但运行时却很不稳定 有没有办法可以将其转换为逐帧过程并自己将其另存为视频 而不是尝试在播放期间录制它 基本上我想将 WPF 渲染为视频 或列出一系列保存为位图的帧 关
  • Nest.js 中使用 @nestjs/passport 进行可选身份验证

    我有一条需要经过身份验证和未经身份验证的用户使用的路线 我用 UseGuards AuthGuard jwt 启用身份验证 但它会阻止任何未经身份验证的用户访问该路由 正常 如何允许未经身份验证的用户也访问该路由 似乎没有我可以传递的选项A
  • 如何在 Git 中分离子目录但保留所有分支

    我一直在关注这个问题的答案将子目录分离到单独的 Git 存储库中 https stackoverflow com questions 359424 detach subdirectory into separate git reposito
  • UITableView 不重用单元格,这样做的好例子吗?

    我的 UITableView 有 5 个单元格 每个都有一个 UITextField 作为子视图 用户将在其中输入数据 如果我确实使用单元格重用 则当单元格滚动到视图之外时 文本字段将被清除 我不想处理这个问题 有没有办法不重复使用单元格
  • 如何编辑引导程序导航栏的样式?

    我正在尝试编辑引导导航栏的样式 但是 例如 我无法编辑颜色和删除边框 我想将颜色更改为白色 并将边框颜色更改为白色 并且我已包含以下代码 谁能告诉我我做错了什么 navbar default background color ffffff
  • 更改单元格中某些字符的颜色

    我在单元格 A1 中有一句话 我想要其中 50 个 我想将任何数字字符设置为红色文本 只是数字字符 我该怎么做呢 这是我所拥有的框架 Sub RedText Dim i As Integer For i 1 To Len Cells 1 1
  • webpack.config.js 不断将bundle.js 的脚本标记添加到我的index.html 中

    我有如下的 webpack config js var path require path var webpack require webpack var HtmlWebpackPlugin require html webpack plu
  • Angular,如何从字符串解析模板并传递当前上下文变量

    我制作了一个简单的组件来创建表 Component selector admin table template table class table table bordered thead th column label th thead
  • 如何在 if 语句中使用 grep?

    我有以下命令可以给出正确的结果 grep include java Ri System loadLibrary 但是 如果我将它放在 if 条件中 无论字符串是否存在 它总是返回相同的 0 结果 if grep include java R
  • 如何取消引用已传递给子例程的 Perl 哈希引用?

    我仍在尝试解决我的哈希取消引用问题 我当前的问题是我现在将 hashref 传递给子组件 并且我想在该子组件中取消引用它 但我没有找到正确的方法 语法来做到这一点 在 sub 中 我想迭代哈希键 但 hashref 的语法与哈希不同 我知道
  • Java:需要从字节数组创建 PDF

    我从 DB2 表中得到了 blob 我正在将其转换为字节数组 以便我可以使用它 我需要获取字节数组并创建一个PDF出来了 这就是我所拥有的 static void byteArrayToFile byte bArray try Create
  • 哪些列表可以作为临时列表?

    当处理项目列表时 列表仅充当暂时的容器 您建议我使用哪些列表类型 I 不想手动销毁列表 想要使用built in列表类型 无框架 库 想要仿制药 可以在不导致泄漏的情况下实现这一点的东西 function GetListWithItems