将方法指针转换为整数,然后调用它

2024-04-04

我想知道以下是否可能,如果可以,怎么办?请代码示例。

  • 如何储存一个指向对象方法的指针 as an 整数值?
  • 如何将该整数值转换回“方法指针”以及call it?

我想要做的是将“方法指针”存储在 TComponent 派生对象的整数标记值中,然后稍后调用存储的方法。您可以假设所有满足的方法都具有相同的定义。

Thanks!


不,这是不可能的。对象的方法相当于 TMethod:

TMethod = record
  Code, Data: Pointer;
end;

The Code字段是方法的地址,并且Data字段是隐藏的Self传递到每个对象方法中的参数。该记录的大小与 Int64 相同,因此如果将其转换为普通 Integer,您将丢失一半。

您可以使用 GetMem 在堆上分配 TMethod 记录,然后将其地址存储在 Tag 属性中,只要您记得在使用完它后释放它即可。

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

将方法指针转换为整数,然后调用它 的相关文章

  • 如何将接口类型传递给过程

    如何将接口类型传递给过程参数 type Hello PortType interface ISoapInvokable 243CBD89 8766 F19D 38DF 427D7A02EAEE function GetDeneme s st
  • delphi中生成随机数

    我想在delphi中创建一个随机数并将其分配给文件作为文件名 我设法做到了这一点 但是当我单击按钮生成数字时 它总是以 0 开头 知道如何修复它 procedure TForm1 Button1Click Sender TObject va
  • 为什么Delphi打开时间越长编译速度就越慢,我该怎么办?

    我的公司十多年来一直在德尔福上运行一个大型项目 我们的代码库多年来一直在增长 目前代码数量约为 400 万行 编译速度正在成为一个问题 我们花了时间清除单元循环引用 编译缓慢的已知原因 并检查了设置的各个方面 已经到了我们无法通过我们所能控
  • TControlState.csDesignerHide 与 TControlStyle.csNoDesignVisible

    VCL 似乎提供了两种向表单设计者隐藏控件的机制 TControlState csDesignerHide and TControlStyle csNoDesignVisible 就 IDE 而言 它们之间有什么区别 什么时候应该使用哪个
  • 在主表单之前显示登录表单

    我在表单之间导航时遇到问题 我使用 Delphi XE5 创建了一个 Android Firemonkey 移动应用程序 我目前有一个登录表单和主表单 现在我想要有关如何处理登录表单以显示在主表单之前的建议 在 项目选项 中的表单下 选择要
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • 我应该害怕使用 UDP 进行客户端/服务器广播通话吗?

    我在过去的两天里阅读了每一篇StackOverflow问题和答案 以及googling当然 关于印地TCP and UDP协议 以便决定在我的用户应用程序和 Windows 服务之间的通信方法中应该使用哪一种 从我目前所看到的来看 UDP是
  • Delphi如何使用其他窗体中的类型?

    抱歉 这是一个非常新手的问题 我正在对这个庞大的应用程序进行维护 它有5种不同的形式 我们将全局变量放在一个单元 uGlobal 中 但我似乎无法从数据单元 uData 访问它 我有这个 Unit uGlobal type TmyType
  • Delphi DataSnap REST 服务器从 TStream 返回 JSON 数组,而不是二进制

    我有一个与 Android 客户端通信的 REST 服务器 我将它从 XE3 ish 升级到 Berlin 其中一个服务器方法返回一个包含 jpeg 的 TStream 并且工作得很好 很高兴将图像作为二进制图像返回 升级到 Berlin
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • 如何向标准集合编辑器添加图标?

    我有一个自定义控件 它利用TCollection and TCollectionItem 在集合编辑器中 我想向每个列表项添加图标 该列表项由内部TImageList 在其父组件内 集合项本身代表图标 我想在这个编辑器中显示相应的图标 如何
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • 如何用不同的颜色绘制选定的列表框项目?

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

随机推荐

  • 为什么 Scala 标准库中 @specialized 的东西这么少?

    我已经搜索过使用 specialized在Scala 2 8 1标准库的源代码中 看起来只有少数特征和类使用此注释 Function0 Function1 Function2 Tuple1 Tuple2 Product1 Product2
  • WPF MediaElement 视频播放撕裂

    我正在尝试使用 WPF 中的 MediaElement 控件来播放视频 它在 Vista 中运行得很好 但是当我在 XP 机器上运行它时 我的显示屏出现撕裂现象 看起来好像没有使用垂直同步 只是在绘制过程中更新屏幕 有人知道如何解决这个问题
  • 如何让 VS Code 识别 ES7 绑定运算符

    VS Code 无法识别开箱即用的 ES7 绑定语法 相反 它显示为语法错误 代码中突出显示的错误示例 https i stack imgur com gXXrX png ts Declaration or statement expect
  • Android信号分析+一些过滤器

    由于世界杯是主要的体育赛事 而呜呜祖拉是世界上最烦人的声音 我想通过阅读这篇新文章来彻底消除它们 http www popsci com diy article 2010 06 simple software can filter out
  • ContextCompat.checkSelfPermission 的用例是什么?

    目前我有以下方法来检查运行时权限AppCompatActivity对于棉花糖 if Build VERSION SDK INT gt Build VERSION CODES LOLLIPOP MR1 boolean hasPermissio
  • Rails 3:如何在控制器中获取图像路径?

    要获取控制器中的图像路径 我使用以下方法 class AssetsController lt ApplicationController def download image file name path Rails root join p
  • Z3 SMT 求解器中的常数相等

    我正在使用 Microsoft 的 Z3 SMT 求解器 并且我正在尝试定义自定义类型的常量 默认情况下 这些常量似乎并不不平等 假设您有以下程序 declare sort S 0 declare const x S declare con
  • 带有淡入淡出效果的完整背景图像

    crossfade gt div animation imageAnimation 30s linear infinite 0s backface visibility hidden background size cover backgr
  • 旁加载静态数据

    在 ParDo 中处理数据时 我需要使用存储在 Google Cloud Storage 上的 JSON 架构 我想这可能是侧面加载 我读了他们称之为文档的页面 https beam apache org releases pydoc 2
  • 如何将 [[nodiscard]] 属性应用于 lambda?

    我想防止人们在不处理返回值的情况下调用 lambda Clang 4 0 拒绝我尝试过的一切 使用 std c 1z 进行编译 auto x nodiscard return 1 error nodiscard attribute cann
  • 处理segfault信号SIGSEGV需要使用siginfo_t确定segfault的原因

    我正在为 pthread 库制作一个包装器 它允许每个线程拥有自己的一组非共享内存 现在 如果任何线程尝试读取另一个线程的数据 程序就会出现段错误 这很好 我可以用叹息者抓住它并打电话pthread exit 并继续执行该程序 但并不是所有
  • Bootstrap 下拉列表 z-index 显示在模式窗口页脚下

    我在引导程序方面遇到了一些样式问题 我有一个包含下拉菜单的小模态窗口 但是我似乎无法让下拉菜单显示在窗口的页脚上 我已经使用了下拉列表的 zindex 确保它高于 Windows 但没有运气 谁能建议我应该改变什么 The html div
  • 如何创建浮动操作按钮转变成单张材料

    我正在尝试查看设计库中是否存在任何内置动画来创建浮动操作按钮 并将其转换为单个材料表 如材料设计图像中所示 https material design storage googleapis com publish material v 4
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查
  • Heroku DATABASE_URL 作为 Maven 的 JDBC Url

    我在 Heroku 上的应用程序使用 DATABASE URL 使用 Java 将其解析为带有用户名和密码的 JDBC URL 很简单 那里没有问题 但是 我有一个带有 Maven 插件的 JOOQ 生成器和 Flyway 迁移器 但我不知
  • 如何使用 CodeIgniter ACL 库?

    如何实现 ACL 库 对用户角色使用 ACL 的最佳方法是什么 在标准 PHP 中 我会编写如下代码 if userTypeId Admin hello Admin else if userTypeId Member hello membe
  • 创建 ManagedCertificate 会导致“状态:FailedNotVisible”

    使用 Kubernetes 1 12 6 gke 7 或更高版本 可以创建一个 ManagedCertificate 然后从将服务暴露到互联网的入口资源中引用该证书 运行 kubectl describe Managedcertificat
  • 我可以检查 CoInitialize 是否已被调用吗?

    在具有ADO数据库连接的多线程环境中 我想知道CoInitialize是否已被调用 我该如何检查这个 通常你不应该做这个检查而只是打电话CoInitialize CoUnInitialize一对 你仍然可以这样做 function IsCo
  • 条码字段长度

    我正在写一些考勤软件 每个会员都会有一张带有条形码的身份证 他们将用它来登录活动 条形码字段在我的数据库中应该有多长 我想要接受 Code 39 和 Code 128 条形码 我知道这些是可变长度代码 那么我应该将最大长度设置为多少 Tha
  • 将方法指针转换为整数,然后调用它

    我想知道以下是否可能 如果可以 怎么办 请代码示例 如何储存一个指向对象方法的指针 as an 整数值 如何将该整数值转换回 方法指针 以及call it 我想要做的是将 方法指针 存储在 TComponent 派生对象的整数标记值中 然后