指针

delphi – TTypeInfo之前的“身份指针”是什么?

如果你在Delphi内部进行足够的讨论,你会发现一些奇怪的东西,并且显然没有记录编译器生成的TTypeInfo记录.如果PTypeInfo指向地址X处的TTypeInfo记录,则在X-4处,您将发现接下来的4个字节描述了指向X的指针.例如:将编译器生成的任何合法的PTypeInfo传递给此例程,并且它将输出相同的地址两次.我在TypInfo.pas中稍微捅了一下,但是我没有看到任何提到这个“身份指针”的东西或它的用途.有谁知道为什么会这样?

delphi – 如何在类型常量中包含方法指针?

解决方法对象的方法是所谓的双指针类型.它封装了以下信息:>功能的地址.>对象的地址或主题.前者在编译时是已知的,但通常后者不是.这就是您通常需要在运行时创建这些东西的原因.如果您可以安排在编译时知道主题,那么您可以声明记录类型的类型常量.例如:当然,如果你的函数作为类方法而不是实例方法可行,那么这对你有用.我只是添加上面的代码来说明你可以拥有常量方法指针,只要主题是编译时常量.

delphi – PChar(”)是否保证是指向#0(不是nil)的指针?

据我所知,在Delphi中,空字符串可以用nil指针表示,也可以用指向实际空字符串的指针表示.通过实验,我已经证明在DelphiXE2中,PChar(”)零.但这是保证,还是可能在未来的版本中更改,或者依赖于某些编译器设置?

IOS开发之路--C语言指针

指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚

delphi – 如何将nil传递给var参数?

编辑:从DavidHefferman的评论来看,似乎标准的做法是重新声明这样的例程.就个人而言,我更喜欢使用标准声明,如果我可以在我自己的个人单位,但出于专业工作的目的,我建议开发人员遵循标准做法.

通过访问Delphi记录字段.或^

我在Delphi语言中遇到过一些我之前没有注意到的东西.考虑一个简单的记录和指向该记录的指针:现在声明一个PTRecord类型的变量:并创造一些空间:我注意到我可以使用’.’来访问值字段.符号和’^.’符号.因此,以下两行似乎在操作上是等效的,编译器不会抱怨并且运行时工作正常:我原以为’^.’是正确的,唯一的方式来获取价值?

在Delphi 6类声明中分配接口指针?

尽管多年的Delphi编程我刚刚遇到了一个类声明样式,我从来没有看到支持IUnkNown的类:您可以看到,IUnkNown接口方法的类方法的分配正在类声明中进行.这对我来说真的很奇怪,特别是因为在调用构造函数之前,我没有看到IUnkNown方法可以如何分配给它.这是一种编译时快捷方式,用于在类的方法和类接受的接口的接口指针之间进行分配,稍后在运行时解析?

在Delphi中,可以将接口绑定到不实现的对象

我知道DelphiXE2具有新的TVirtualInterface,用于在运行时创建接口的实现.不幸的是,我没有使用XE2,我想知道在旧版本的Delphi中如何处理这样的事情.让我说我有以下界面:在编译器的帮助下,是否可以在运行时绑定到此接口?)添加一个新的条目,它包含一个新的接口vtable与指针指向正确的方法,然后将类的接口表指针更改为指向新表.要特别小心.这种工作真的不是因为微弱的心脏,在我看来,这是有限的效用.但是,这是可能的.

数组 – 如何将数组转换为指针并返回到Delphi?

我有一个所有者绘制的组合框,显示列中的字符串.如果我可以以某种方式将列规格传递给OnDrawItem事件,则可以在组合中共享绘图例程.一个自然的方式,可以将ComboBox.Tag属性中的列宽数组传递给数组.当我将列数组定义为:并将Tag属性设置为:然后在OnDrawItem事件中,将其转换回数组:我可以看到数组元素很好,但数组不知道它的长度.它看起来比各种随机值更长.我已经尝试使用动态数组,但是