TMethod】的更多相关文章

onclick是TNotifyEvent类型; type TNotifyEvent   =   procedure(Sender:   TObject)   of   object; 就是说他是一个过程,而且是有一个TObject的参数,并且包含在一个对象里-- 关于类的方法:   (不是类方法,这里指object   pascal中的静态方法,相当于C++的成员函数) 1:   带有隐含参数   self 2:   方法是方法,数据是数据. 3:Delphi的方法是一个结构 type TMet…
忽然发现TProcedure和TNotifEvent的区别还挺大的: procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage(IntToStr(SizeOf(TProcedure))); // 4字节 // ShowMessage(IntToStr(SizeOf(function))); // 编译通不过 ShowMessage(IntToStr(SizeOf(TNotifyEvent))); // 8字节 ShowMe…
回看旧时代码,以往清楚之记忆渐渐模糊,事隔多年,遗忘正在发生. TMethod方法,当初熟练再看已陌生,再做复习以作备忘. 简言之,它做为一相桥接,将普通事件或方法转换为类方法,其多用于事件动态设置中. 它定义如此: TMethod = record Code, Data: Pointer; end; 以代码示之,如下: //此处可为procedure,亦可为function.参数也可随意设置 procedure FormOnClick(Sender: TObject); begin ShowM…
Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下: 假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方法: type TWriteProc=procedure of Object;var WriteProc:TWriteProc; .... TMethod(WriteProc).Code:=@TGrand.Write; TMethod(WriteProc).Data:=Self; WriteProc…
http://bbs.2ccc.com/topic.asp?topicid=496893…
下载:访问 TProfiler 的 GitHub 主页,https://github.com/alibaba/TProfiler,点击 Clone or download 按钮的打开下载选项,点击该选项下的 Download ZIP 按钮将 TProfiler-master.zip 下载到本地. 安装:本地将下载后的 TProfiler-master.zip 解压缩,将 dist 目录下的 profile.properties 以及 dist/lib 目录下的 tprofiler-1.0.1.j…
Option Explicit On Option Strict On Imports System.Reflection Imports System.Diagnostics Public Structure ErrInfo Public Number As Integer Public Description As String Public Comment As String Public ClassName As String Public FuncName As String Publ…
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口.代理内容,生成代理. 抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既加深了对于这些类的理解.提升了自己的写代码水平,也可以在写完之后对比一下自己的实现有哪些写得不好…
首先看一段Delphi帮助中的介绍(After Delphi 6 ): Returns the address of a published method. class function MethodAddress(const Name: ShortString): Pointer; Description MethodAddress is used internally by the streaming system. When an event property is read from a…
转载:http://www.cnblogs.com/ywangzi/archive/2012/08/28/2659811.html 总结:TMyEvent = procedure of object; 与 TMyProc = procedure;区别就是 TMyEvent可以再过程内部调用self,而TMyProc不可以 其实要了解这些东西,适当的学些反汇编,WINDOWS内存管理机制,PE结构,看下李维的VCL架构剖析可以很好理解type  TMyEvent = procedure of ob…
http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel 属性:是否设置成默认的取消按钮,当设置为真的时候(true) 按ESC触发改按钮的事件! Default 属性:是否设置成默认的确认按钮,当设置为真的时候 按ENTER键的时候触发事件 Hint 属性:设置当鼠标在按钮上短暂停留是显示的提示内容. Showhint 属性: 是否显示提示内容默认为假!…
it CompilerhelperForInitializingFinalizingVariable; interface { Compiler helper for initializing/finalizing variable } procedure _Initialize(p : Pointer; typeInfo : Pointer); procedure _InitializeArray(p : Pointer; typeInfo : Pointer; elemCount : Nat…
本文来自:http://www.cnblogs.com/hezihang/p/6083555.html Delphi采用接口方式设计模块,可以降低模块之间的耦合,便于扩展和维护.本文提供一个实现基于接口(IInterface)方式的监听器模式(观察者模式.订阅者模式),实现一个自动多播器. 下面程序在Berlin下测试通过,其他Delphi版本未测试,未进行跨平台测试(应该可以支持) 1.prepare 在观察者模式中采用接口,可以将相关函数汇合为接口. 举例:假设我们窗口有一个TTreeVie…
1 .ready 与resize方法.$(inject).ready(function() { var windowWidth = $(document.body).outerWidth(true); resizeBannerAd(windowWidth);});$(window).resize(function() { var windowWidth = $(document.body).outerWidth(true); resizeBannerAd(windowWidth);});2 .获…
一.指针:指向一个内存地址的变量或参数. 二.定义指针的方式如下: P: Pointer; //定义了可以指向任何类型的指针,Pointer 为无类型指针: Q, R: ^TType; //定义了指向 TType 类型的两个指针,TType 可是是各种 //基本类型或自己定义的各种类型,也可以如下定义: // type PType = ^TType; // var Q, R: PType; 三.指针的使用: P: Pointer; Q, R: ^TType; A: TType; Q:= R; /…
Delphi动态事件深入分析 2009-2-7 作者:不得闲核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递... 首先做一个空窗体,放入一Button.在implementation下面声明两个方法如下: // 外部方法,只声明一个参数,此时按照标准的对象内部事件方法TNotifyEvent声明,此声明中,Sender则对应为产生该事件的对象指针. procedure ExtClick1(Sender: TObject);…
高手们的文章有很大启发,但是总有些小错,也有没交代清楚的,以下是我的理解: 编译器编译MainWndProc的时候,它是一个正常Delphi普通函数,MakeObjectInstance对它做变换是运行期的事情, 它有两个参数的:SELF,TMESSAGE,编译的时候仍然按照register规则编译.从而被翻译为一大堆汇编命令的集合. 它的头一句汇编就已经开始工作,至于函数参数的准备,由编译器在外部给它完成.函数自己不会为自己准备参数,也无法为自己准备参数. MakeObjectInstance…
Thread message loop for a thread with a hidden window? I have a Delphi 6 application that has a thread dedicated to communicating with a foreign application that uses SendMessage() and WM_COPYDATA messages to interface with external programs. Therefo…
http://www.thedelphigeek.com/2007/06/allocatehwnd-is-not-thread-safe.html http://gp.17slon.com/gp/files/dsiwin32.zip AllocateHwnd is not Thread-Safe [This article also serves as announcement of DSiWin32 1.26.] [Update: Reported as QC #47559. Vote for…
http://www.cybletter.com/index.php?id=3 http://www.cybletter.com/index.php?id=30 Source Code http://www.cybletter.com/index.php?s=file_download&id=3 Full Paper www.cybletter.com/index.php?s=file_download&id=4 Alexandr ŠtefekMilitary Academy in Brn…
http://embarcadero.newsgroups.archived.at/public.delphi.rtl/201112/1112035763.html > Hi,>> What is the difference between these two definitions:>>  TThreadMethod = procedure of object;>  TThreadProcedure = reference to procedure;>>…
Delphi 7事件的多处理机制Allen Tao2007-08-19 首先解释一下这个题目.在我使用Delphi 7的过程中发现,一个对象的事件只能被一个过程处理.如果多次给这个对象的事件赋给处理事件的过程,最后真正处理事件的将是最后赋值的那个过程.例如,有类TMyClass中定义了一个事件OnSomeFired,在类TClientClass中该类被实例化,它的事件被处理.如下所示:constructor TClientClass.Create;var  myObj: TMyClass;beg…
其实要了解这些东西,适当的学些反汇编,WINDOWS内存管理机制,PE结构,看下李维的VCL架构剖析可以很好理解type TMyEvent = procedure of object;这是一种数据类型的定义,他定义了一个可以在类中使用的函数类型区别于type TMyProc = procedure; TMyEvent 和 TMyProc 都定义了一个函数类型,他们的差别是,TMyProc 不可以用在类中定义事件,TMyEvent 却可以. 如果你想知道问什么,那就需要深入了解事件类型以及函数类型…
本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确定位系统瓶颈:我们应用里静态对象不是太多.有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有问题.那么问题来了,如何在海量业务代码里边准确定位这些性能代码?本文将介绍如何使用阿里开源工具 TProfiler 来定位这些性能代码,成功解决掉了 GC 过于频繁的性能瓶颈,并最终在上次优化的基础…
Delphi2010之后的RTTI做了很大休整,现在用起来很爽了哦.甚至可以获取某些类的内部私有单元,然后为其赋值!讲这个RTTI增强的,可以参考网上的多个博客内容,我列举一下:Delphi2010RTTI的增强Delphi的Anymouse方法探秘万一的Rtti系列 我这里的主要目的是挂钩某些内部私有事件,然后增加上一些自己的处理过程,这里我以TMenuItem的私有内部事件FOnChange作为例程.这个私有事件在菜单内部绑定,我们平常状态下,在外部无法更改!但是XE之后这个问题不在存在,使…
一个灵巧的Delphi多播实现方案.必须是支持泛型的Delphi版本.也就是Delphi2009以后.强烈建议用DelphiXE. 用法就是例如写一个Class指定一个Event,触发的时候会通知多个Method.和.NET的多播事件机制是一样的. 用法例如:type TFakeButton = class(TButton) private FMultiCast_OnClik : TMulticastEvent<TNotifyEvent>; public constructor Create(…
1 CI不区分大小写2. http://xxx.com/index/[控制器名称]/[控制器里面方法的确名称]/[传入方法的参数 ]/ 3. 控制器及控制器类名称与文件名称一致, 继承 CI_Controller 类,放在controller 文件里面 4. 控制器里的方法用数组传,模板放在 views里面,获取控制器方法中国传来的值时,用 传值时的 "$"+数组下标作变量名5. 在方法里面加载模板时,用 $this->load->view("模板名称"…
http://ljz9425.blog.163.com/blog/static/369148572008111635253858/ Delphi下的RTTI(下) 2008-12-16 15:52:53|  分类: Delphi |字号 订阅目 录===============================================================================⊙ GetTypeData 函数⊙ GetPropInfo 函数⊙ FindPropInfo…
这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一…
虽然用delphi也有7,8年了,但大部分时间还是用在系统的架构上,对delphi底层还是一知半解,今天在网上看到一篇文章写得很好,虽然是07年的,但仍有借鉴的价值. 现摘录如下: Delphi程序设计之--经验技巧 这些日子太忙了,今天把剩下的部分贴完,希望对大家有用.看过前一篇的都知道此文的作者和出处,我就不详细说了. { No. 16 } //对于记录类型Record的分析. 实例: type TBaseRec = record   rStr: Integer;   rStr2: Stri…