`Class of` 类型声明的含义是什么?

2024-01-28

在查看我的代码之一时,我陷入了如下的一项声明。

TMyObjectClass = class of TMyObject;

我有点困惑,想知道这句话的含义是什么。 作为TMyObjectClass声明之上没有任何声明。

and TMyObject声明如下:

TMyObject = class(TObject) private //some private member declaration Public // some public variables end;

所以,我的问题是该声明的含义是什么TMyObjectClass = class of TMyObject;

and How TMyObjectClass works?

我对 Delphi 有点陌生,所以请帮助我了解这些类型的声明和解决方法。


这是一个类参考 http://docwiki.embarcadero.com/RADStudio/en/Class_References.

它们用于处理元类。典型的例子是 Delphi 流框架,它使用

TComponentClass = class of TComponent;

这允许动态绑定到虚拟构造函数。这TComponent构造函数是virtual。流框架需要实例化派生类TComponent。它这样做是这样的:

var
  ComponentClass: TComponentClass;
  Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);

现在,因为TComponent.Create is virtual,这是以多态方式绑定的。如果TComponentClass is TButton, then TButton.Create叫做。如果TComponentClass is TPanel, then TPanel.Create叫做。等等。

最重要的是要认识到,所构造的类仅在运行时确定。请注意,许多语言缺乏此功能,尤其是 C++。

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

`Class of` 类型声明的含义是什么? 的相关文章

  • Indy FTP 传输类型

    我正在使用 IdFTP Indy 10 组件从远程位置下载一些文件 zip 和 txt 在获取每个文件之前 我将 TransferType 设置为二进制 IdFTP TransferType ftBinary IdFTP Get ASour
  • QT 中的应用程序->处理消息?

    在 Borland 6 中 我经常使用它来解除程序操作的卡住 Application gt Processmessages 现在 对于 QT 4 8 1 我在这个外国 对我来说 QT 文档中找不到 谁能帮我 在 Qt 中 您可以使用静态函数
  • 在python中访问超级(父)类变量

    我是Python新手 我尝试使用 super 方法访问子类中的父类变量 但它抛出错误 无参数 使用类名访问类变量是可行的 但我想知道是否可以使用 super 方法访问它们 class Parent object props a str a
  • 获取字符、整数和日期字段的字段 oldValue 和 newValue

    我试图只保留表更改的历史记录 所以我想获取一个字段在更改为oldValue之前的值 然后获取它更改为newValue的值 两个值都应转换为字符串 因此 这是该表的一个示例 PartNumber Description 12345 Test
  • Delphi - 将物理路径(设备文件句柄)转换为虚拟路径

    我怎样才能转换像这样的路径 设备 HarddiskVolume3 Windows 进入其相应的虚拟路径 如本例中的 c Windows 我个人更喜欢原生方式 function GetHDDDevicesWithDOSPath TString
  • Ruby 对象打印为指针

    我正在尝试创建一个类 它有一个带有单个参数的构造函数 当我创建该对象的新实例时 它返回一个指针 class Adder def initialize my num my num my num end end y Adder new 12 p
  • Delphi 的免费加密库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为 Delphi 2010 寻找一个免费且最新的加密库 该库实现 RSA 和 AES Rijnda
  • C# 中的类和模块有什么用

    有人可以解释一下类和模块之间的区别吗 你什么时候使用其中一种而不是另一种 我正在使用 C 更新 我的意思是相当于 VB 模块的 C 版本 这在很大程度上取决于您所指的 模块 Visual Basic 的模块 C 中没有真正等效的 VB Ne
  • 我应该害怕使用 UDP 进行客户端/服务器广播通话吗?

    我在过去的两天里阅读了每一篇StackOverflow问题和答案 以及googling当然 关于印地TCP and UDP协议 以便决定在我的用户应用程序和 Windows 服务之间的通信方法中应该使用哪一种 从我目前所看到的来看 UDP是
  • 为什么在 C++ 类中的数据成员上使用像 m_ 这样的前缀?

    许多 C 代码使用语法约定来标记数据成员 常见的例子包括 m memberName对于公共成员 在所有使用公共成员的情况下 memberName对于私人会员或所有会员 其他人尝试强制使用this gt member每当使用数据成员时 根据我
  • Haskell 类型系统的细微差别

    我一直在深入了解 haskell 类型系统的本质 并试图了解类型类的要点 我已经学到了很多东西 但我在下面的代码片段上遇到了困难 使用这些类和实例定义 class Show a gt C a where f Int gt a instanc
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • JavaScript - 类根据条件扩展

    事情是这样的 我有一个名为 A 的主课 我希望这个班级能够扩展 B 级 class A extends B 但事实上 我希望 B 类在特定条件下扩展 C D 或 E class B extends B1 or class B extends
  • 使用 TStringList 的分隔符解析字符串,似乎也解析空格(Delphi)

    我有一个简单的字符串 由某个字符分隔 比如说逗号 我应该能够创建一个 TStringList 并将其分隔符设置为逗号 然后将 DelimitedText 设置为我想要解析的文本 并且应该自动解析它 问题是 当我查看输出时 它还包含空格作为分
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • 当 Delphi 处于覆盖模式时,如何更改它的光标形状?

    当使用 Delphi 的任何版本时 我有时会碰巧按下插入键并打开覆盖模式 这通常是一个很大的麻烦 并且您进入覆盖模式的唯一指示是编辑器底部的小文本 当使用其他程序 首先想到的是 Notepad 时 当您处于插入模式时 文本光标是 当您处于覆
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 如何从 Delphi 中的函数返回对象而不导致访问冲突?

    我有一个返回 TStringList 的 delphi 函数 但是当我返回一个值并尝试使用它时 我收到一个访问冲突错误 即 myStringList FuncStringList myStringList Items Count lt Th

随机推荐

  • 如何以编程方式从网站下载图像?

    我需要从网站下载图像 并且我有登录名和密码 但是如果我只是使用 URL 来下载图像 则会抛出异常 会话中没有值 我想我需要登录网站才能以编程方式下载图像 你有什么解决办法 提前致谢 在简单的情况下 您可以使用URLConnection ht
  • Graphql 错误:仅在 Android 中网络请求失败

    我的所有查询在 iOS 中运行良好 但在 Android 中给出网络请求失败错误 其他一些 SO 和 GitHub 解决方案建议我不应该使用localhost for my uri并且应该使用我计算机的IP地址 但我已经不使用本地主机了 c
  • ContentProvider不会出现在数据和同步区域

    我试图让自定义 ContentProvider 显示在 数据和同步 下 但遇到了一些问题 也就是说 它没有出现 具体内容 我的 AndroidManifest xml 有提供者和服务
  • 如何生成哈希签名?

    我正在使用 twilio sdk 将短信验证与我的 Android 应用程序集成 twilio 要求我注册我的应用程序的哈希签名 但生成哈希签名的方法不起作用 总是说它是无效的哈希签名 这是 twilio 想要哈希签名的路径 用户在 and
  • Eclipse [EclEmma] 中的覆盖排除不起作用?

    根据这个帖子 https stackoverflow com questions 37004345 how to exclude classes from the coverage calculation in eclemma withou
  • 使用 Python 请求从本地 url 获取文件?

    我正在使用Python的requests http docs python requests org en latest index html我的应用程序的一种方法中的库 该方法的主体如下所示 def handle remote file
  • 如何打乱列表中的顺序?

    我想打乱列表中元素的顺序 from random import shuffle words red adventure cat cat shuffled shuffle words print shuffled expect new ord
  • “数据抽象”到底意味着什么?

    数据抽象指的是什么 请同时提供现实生活中的例子 抽象有两个部分 Hide从某种角度来看并不重要的细节 确定从某个角度来看确实重要的细节 并考虑项目的重要性the same如果他们拥有这些详细信息 则可以上课 例如 如果我正在设计一个处理库存
  • 由 java.lang.SecurityException 引起:uid ... 无法显式添加类型为:... Android P 和 Android 10 的帐户

    最近 我发现 Firebase Crashlytic 报告的以下错误有所增加 Caused by java lang SecurityException uid 10172 cannot explicitly add accounts of
  • 获取与 ggplot + stat_ecdf() 关联的数据

    我喜欢stat ecdf ggplot2 包的功能部分 我发现它对于探索数据系列非常有用 然而 这只是视觉上的 我想知道是否可行 如果是 如何 获取关联的表 请查看以下可重现的示例 p lt ggplot iris aes string x
  • Java 8 Streams 查看 API

    我尝试了以下 Java 8 代码片段peek List
  • 将变量设置为“this”是否有功能目的? [复制]

    这个问题在这里已经有答案了 就像 有时当我查看其他人的代码时 他们会去var self this 或者以 jquery 为例 govar self this 这样做有什么特殊原因吗 它保留了以下的价值this用于当前函数内定义的函数 Con
  • 在 MATLAB 中求解多个非线性独立方程的最快方法?

    MATLAB 有两种求解非线性方程的方法 fzero https mathworks com help matlab ref fzero html 求解单个非线性方程 fsolve https mathworks com help opti
  • 通过搜索文档找到最小片段的算法?

    我一直在阅读斯基纳 Skiena 出色的 算法设计手册 并沉迷于其中的一个练习 问题是 给定一个由三个单词组成的搜索字符串 找到包含所有三个搜索单词的文档的最小片段 即其中单词数量最少的片段 您将获得这些单词在搜索字符串中出现的索引位置 例
  • 如何在 postgresql 中找到死元组的大小?

    如何在 postgresql 中找到死元组的大小 我已经使用 pg dump 创建了数据库备份并将其恢复到其他服务器上 我发现两个数据库中的数据库大小存在差异 5 GB 我已经验证了表中的活元组和死元组 由于当前数据库中添加了新数据 存在行
  • 如何从子进程(通过 Parallel::ForkManager 分叉)传递变量?

    我的查询 在下面的代码中我试图打印 commandoutput 0 被转移或传递到即将到来的子程序中 我尝试通过转移来传递它 但我失败了 你能帮我正确的方法吗 Code my max forks 4 createThreads my com
  • 从具有开始/结束日期的行创建年份序列行的数据框

    我对 R 和编码来说是一个相对较新的用户 我已经搜索过但无法解决这个问题 我有以下数据 groupid start date end date Status 1 2014 01 01 2017 01 01 A 1 2018 01 01 20
  • Python - 检查字母是否在列表中

    如果一个字母 字符串 在列表中 find letter o 你好 c 再见 返回 True 否则返回 False def find letter lst lst o hello 1 n o if not lst return 0 elif
  • 响应式背景图像 bootstrap 3

    我正在使用 bootstrap 并试图使我的背景图像具有响应能力 但它不起作用 这是我的代码 html div class row div class bg img src img home bg jpg alt home backgrou
  • `Class of` 类型声明的含义是什么?

    在查看我的代码之一时 我陷入了如下的一项声明 TMyObjectClass class of TMyObject 我有点困惑 想知道这句话的含义是什么 作为TMyObjectClass声明之上没有任何声明 and TMyObject声明如下