针对delphi–在IDEObjectInspector中动态显示/隐藏属性?和delphi隐藏窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c–delete(Object)等效于调用
针对delphi – 在IDE Object Inspector中动态显示/隐藏属性?和delphi隐藏窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c – delete(Object)等效于调用Object .~Object()、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...
- delphi – 在IDE Object Inspector中动态显示/隐藏属性?(delphi隐藏窗口)
- c – delete(Object)等效于调用Object .~Object()
- Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...
系列 - delphi – TObject包含哪些数据?
- delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?
delphi – 在IDE Object Inspector中动态显示/隐藏属性?(delphi隐藏窗口)
现在我已经研究了它是如何工作的,它是一堆接口定义,来自IFDStanDeFinition.我无法弄清楚它是如何在IDE中实际执行的,除了有一个TStringList涉及利用名称/值对功能.
我希望在我自己的组件中实现相同的东西,特别是TCollectionItem有一个属性ActionType,它是一个Enum类型.我想动态显示/隐藏属性,具体取决于为该属性选择的值.
如何在我自己的组件集合项中的IDE Object Inspector中实现显示/隐藏属性的相同功能?
另外,我担心答案的一部分是它需要所有的字符串值,根据你如何通过代码与这个Params属性进行交互来判断.
解决方法
c – delete(Object)等效于调用Object .~Object()
static void Constructor(ObjectType *thisPointer) { new(thisPointer) ObjectType(); }
和这样的代码来销毁对象:
static void Destructor(ObjectType *thisPointer) { thisPointer->~ObjectType(); }
我有几个问题:
>这种方式使用析构函数是否正确? (Eclipse判断这是一个错误)据我所知,这段代码应该调用析构函数而不释放内存(调用free())
>是否可以使用delete(thisPointer)(或类似的东西)而不是这种结构,它是否相同? (至少这段代码在编译和运行时没有错误)
>还有其他方法可以在不释放内存的情况下调用析构函数吗?
先感谢您.
解决方法
Is it correct way to use destructor this way?
是.您使用placement-new就地构造了对象,因此必须使用显式析构函数调用来销毁它(假设它具有非平凡的析构函数).
Is it possible to use
delete(thisPointer)
(or something like it) instead of this construction and is it will be equivalent?
删除号将尝试使用operator delete()将内存释放到免费存储区;这只有在使用普通的新表达式(或者可能是显式使用operator new())时才有效.
Is there other ways to call destructor without deallocating memory?
并不是的.调用析构函数当然是调用析构函数的最清晰,最简单的方法.
Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject... 系列
总结
以上是小编为你收集整理的 系列">Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
delphi – TObject包含哪些数据?
编辑:显然这是D2009特有的.在旧版本中,它只有4个字节.
解决方法
class function TMonitor.GetFieldAddress(AObject: TObject): PPMonitor; class function TMonitor.GetMonitor(AObject: TObject): PMonitor;
…在System.pas中
此外,仍然有一个指向VMT的指针. (虚拟方法表.)From Delphi in a Nutshell:
The TObject class declares several methods and one special,hidden field to store a reference to the object’s class. This hidden field points to the class’s virtual method table (VMT). Every class has a unique VMT and all objects of that class share the class’s VMT.
delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?
为什么TObject方法AfterConstruction和BeforeConstruction具有公共可见性?
我希望他们受到保护.
他们不是的原因是什么?
我无法想象在没有调用该类的构造函数或析构函数的情况下调用AfterConstruction或BeforeConstruction的有效目的.你呢?
解决方法
TObject.AfterConstruction只由这样的实用函数System._AfterConstruction调用.如果它(严格)受到保护,那么该独立函数将无法访问该方法.
TObject的所有方法都是公开的.*我们可能找到理由解释为什么每个方法都是公开的,但在某个时刻,我怀疑任何给定方法公开的根本原因是所有其他方法也是公开的.
一旦Delphi与这些方法公开发布,其可见性的任何降低都有可能破坏现有代码.
*由于某些原因,Getdisposed和Checkdisposed除外.与TObject的大部分相比,它们相对较新.
今天关于delphi – 在IDE Object Inspector中动态显示/隐藏属性?和delphi隐藏窗口的分享就到这里,希望大家有所收获,若想了解更多关于c – delete(Object)等效于调用Object .~Object()、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...
本文标签: