转自:http://blog.csdn.net/haiou327/article/details/6666124
delphi中nil的用法
和C++中的NULL一样的意思,指空值,它和0值不一样~~
nil就是空指针~~
指针表示的就是内存的一个地址~~(数据存放位置)~~
nil就表示空地址~~
例如:
指针表示的就是内存的一个地址~~(数据存放位置)~~
nil就表示空地址~~
例如:
说对一个TImage中的图片进行清空:
Image1.Picture:=nil;
Image1.Picture:=nil;
对象也是指针,如上的Image1就是一个对象指针~~
当一个对象没有创建的时候它的值一般为空,也就是nil
程序在读取数据的时候必须知道数据所存放的位置~~
就是说所有的变量读取都离不开指针~~
由于指针也是数据所以指针也有自己的存储地址~~
当然就可以用一个指针来定位另一个指针~~
指针其实是一32位(4Byte)的数值~~
nil就是数值为0的指针~~
begin
if nil = Pointer(0) then ShowMessage('没有骗你吧!')
end;
能够去思考nil是什么很不错~~
但计算机领域是一个完整并且严谨的体系~~
必须从最基本的地方一步一步去了解~~
要了解nil是什么就必须去思考~~
指针是什么?~~
数据是什么?~~
内存是什么?~~
计算机工作的原理~~
数据存储的机制~~
数据结构和算法~~
编程言语设计思想~~
操作系统的运行环境~~
开发工具的背景资料~~
计算机是很傻的~~
要和它对话就必须按照它所掌握的规则~~
只有在规则之上,你才能*驾御它~~
NULL与NIL到底有什么区别?
当一个对象没有创建的时候它的值一般为空,也就是nil
程序在读取数据的时候必须知道数据所存放的位置~~
就是说所有的变量读取都离不开指针~~
由于指针也是数据所以指针也有自己的存储地址~~
当然就可以用一个指针来定位另一个指针~~
指针其实是一32位(4Byte)的数值~~
nil就是数值为0的指针~~
begin
if nil = Pointer(0) then ShowMessage('没有骗你吧!')
end;
能够去思考nil是什么很不错~~
但计算机领域是一个完整并且严谨的体系~~
必须从最基本的地方一步一步去了解~~
要了解nil是什么就必须去思考~~
指针是什么?~~
数据是什么?~~
内存是什么?~~
计算机工作的原理~~
数据存储的机制~~
数据结构和算法~~
编程言语设计思想~~
操作系统的运行环境~~
开发工具的背景资料~~
计算机是很傻的~~
要和它对话就必须按照它所掌握的规则~~
只有在规则之上,你才能*驾御它~~
NULL与NIL到底有什么区别?
NULL 是字符串为空 , NULL是无值无类型;
NIL 是指针为空,NIL是空指针型 ;
NIL 是指针为空,NIL是空指针型 ;
nil是空指针,而NUll是空变量;
''也是字符串,不过是空串,但它不是没有,不是null;
Null通常用来表示一个没有初始化的对象;
''也是字符串,不过是空串,但它不是没有,不是null;
Null通常用来表示一个没有初始化的对象;
消息过程的触发机制的原理是什么?
系统中发生了某个事件,WINDOWS把事件翻译为消息,
防到消息对列中,应用程序从消息队列中接受到这个消息
,把他存放到TMSG记录中应用程序把消息传递给一个适当的窗口,
实际上是这个窗口的窗口过程。窗口过程对这个消息进行处理
有的程序有消息过程?不知道你指的是重载的消息呢还是窗口过程。
对于重载的消息,就是加入你自己的代码,你自己要对这个消息作出反应。
其实也没有什么特别的地方,delphi封装了大部分windows消息,但是也没有剥夺我们对其直接处理的利。
系统中发生了某个事件,WINDOWS把事件翻译为消息,
防到消息对列中,应用程序从消息队列中接受到这个消息
,把他存放到TMSG记录中应用程序把消息传递给一个适当的窗口,
实际上是这个窗口的窗口过程。窗口过程对这个消息进行处理
有的程序有消息过程?不知道你指的是重载的消息呢还是窗口过程。
对于重载的消息,就是加入你自己的代码,你自己要对这个消息作出反应。
其实也没有什么特别的地方,delphi封装了大部分windows消息,但是也没有剥夺我们对其直接处理的利。
另外,事件也是属性,在delphi代码提示模板中显示出来!
在次说明一下参数的传值原理?
对象、字符串。因为它们实质就是指针。你修改指针所指的内容,自然会影响到函数或者过程之外的数据。