delphi中一切皆指针
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,TypInfo,ObjAuto;
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var
f:procedure;
i:Integer;
j:integer;
{$R *.dfm}
procedure ExtClick1(Sender: TObject);
begin
{asm
mov eax,[edx+8]
call showmessage
end; }
showmessage(TComponent(Sender).Name);
end;
procedure ExtClick(Frm: TObject;Sender: TObject);
begin
{asm
mov eax,[edx+8]
call showmessage
end; }
showmessage(TComponent(Sender).Name);
if Frm is TForm then
TForm(Frm).Close
end;
procedure TForm1.btn2Click(Sender: TObject);
var
ExtClickEvent: TNotifyEvent;
begin
integer(@ExtClickEvent) := integer(@ExtClick);
//将ExtClickEvent地址指针指向外部函数ExtClick1方法的地址
btn1.OnClick := ExtClickEvent;
//将该地址赋值给 Button1的OnClick事件替换以前的OnClick事件
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
showmessage(TComponent(Sender).Name);
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
btn1.OnClick := btn1click;//还原为对象内触发事件函数
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
i:=0;
i:=Integer(@f);
//j:=Integer(@@f);
ShowMessage(inttostr(i));
i:=Integer(@@f);
ShowMessage(inttostr(i));
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
i:=0;
i:=Integer(@f);
//j:=Integer(@@f);
ShowMessage(inttostr(i));
end;
end.
delphi中一切皆指针的更多相关文章
- Delphi中的函数指针判断是否为空
delphi函数指针 只有@@p才代表了函数指针本身的地址 assigned(p) 判断是否为空 或者用 @p=nil 来判断函数指针是不是为空 Delphi中的函数指针实际上就是指针,只是在使用 ...
- delphi 中的函数指针 回调函数(传递函数指针,以及它需要的函数参数)
以下代码仅仅是测试代码:delphi XE7 UP1 interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.V ...
- delphi 中Adoquery ,在打开时能否让记录指针不移动? [问题点数:40分,结帖人microd]
delphi 中Adoquery ,在打开时能否让记录指针不移动?由于数据集Adoquery 时,它的针指称动会废时,能否在打开完成之前不让记录指针不移动.打开完毕之后再回复移动? 这样用:self. ...
- Delphi中使用比较少的一些语法
本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...
- 翻箱倒柜,《Delphi中建议使用的语句》
(*//标题:Delphi中建议使用的语句整理:Zswang连接:http://www.csdn.net/Expert/TopicView1.asp?id=724036日期:2002-06-22支持: ...
- Delphi中window消息截获的实现方式(2)
Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具.由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpascal)语言,并有强大的数据库引擎 ...
- Delphi 中的 procedure of object
转载:http://www.cnblogs.com/ywangzi/archive/2012/08/28/2659811.html 总结:TMyEvent = procedure of object; ...
- Delphi中的异常处理
转载:http://www.cnblogs.com/doit8791/archive/2012/05/08/2489471.html 以前写Delphi程序一直不注意异常处理,对其异常处理的机制总是一 ...
- Delphi中DLL的创建和使用
参考:http://blog.csdn.net/ninetowns2008/article/details/6311663 结合这篇博客:http://www.cnblogs.com/xumenger ...
随机推荐
- Week4(9月30日):
Part I:提问 =========================== 1.什么是DRY? 2.解释下面的模型验证规则. public class Movie { public int ID { ...
- 怎样删除在Github中创建的项目
像我这种刚開始学习的人总会不可避免的创建了一些測试性的项目.随后自然就是要删除了.那么该怎样删除呢? 你此刻可能处于这个界面: 也可能处于这个界面: 假设是第一个界面直接点击右側的"Sett ...
- Adobe Acrobat Ⅺ Pro安装激活
1.注意一定要断网安装,如果你有防火墙拦截亦可(注意:系统自带那防火墙不行). 2.将AcrobatPro_11_Web_WWMUI.exe解压到一个目录下,找到目录下的setup.exe安装,安装时 ...
- Oracle中查询各种对象的方法小结
--查看当前库中的所有表select * from all_tables a where a.table_name='INFOCODE_P20081'--查看表结构select * from all_ ...
- easyUI相关知识
$("#sportGroupInfoDialog").dialog("open");//打开一个对话框,设置这个对话框的的布局方式 $('#sportGroup ...
- 字符设备驱动[深入]:linux cdev详解
linux cdev详解 http://blog.chinaunix.net/uid-24517893-id-161446.html 用cdev_add添加字符设备驱动: //linux2.6中用c ...
- ORACLE实例恢复过程详细分析--使用dump、BBED等多种工具结合分析
---友情提示,内容较多,可以从博文左上的+目录选择小节方便阅读. 实验思路: --实验相关TRACE文件:http://download.csdn.net/detail/q947817003/6 ...
- [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面
cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不 ...
- ASP.NET利用byte检测上传图片安全
) { //这里只测试上传第一张图片file[0] HttpPostedFile file0 = Request.Files[]; //转换成byte,读取图片MIME类型 Stream stream ...
- Ubuntu 安装Matlab2010a
1.挂载ISO 2.到/media/iso内,在终端执行./install 3.可视化安装 4.问题 1)/usr/local/MATLAB/R2010a/bin/util/oscheck.sh:/l ...