指针

delphi – 是否使用^指向价值的规则是什么?

以下是在delphi中使用指针的简单示例.在这种情况下,Ptr^和Ptr都可以工作.看来,delphi是允许用户更多地指向价值的灵活性.但是通过阅读这两行,它们在语法上是不同的,可能意味着不同.在这种情况下,两个工作.但我的问题是:>在其他情况下,用户可以知道哪些可以或不可以省略或用^或不表示相同或不同?>这些情况是什么?

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

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

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

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

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

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

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

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

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

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

delphi – E2010不兼容的类型,为什么?

我收到这个错误:以下是来自JwaStrSafe.pas的代码的相关部分,我正在使用UNICODE定义的符号进行编译:我在参数ppszDestEnd上调用StringCchcopyExW时出错.查看类型定义我明白PSTRSAFE_LPTSTR是STRSAFE_LPTSTR的指针类型,它只是STRSAFE_LPWSTR的别名,为什么PSTRSAFE_LPTSTR和PSTRSAFE_LPWSTR不兼容?

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

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

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

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