有关Delphi中Null的问题(30分)

  • 主题发起人 主题发起人 Sword_Sharp
  • 开始时间 开始时间
S

Sword_Sharp

Unregistered / Unconfirmed
GUEST, unregistred user!
请问;
在delphi中
NULL,Nil,0;you 有何区别?
 
null是指没有地址空间,
nil是指分配有地址空间,但没有值,
0是指有地址空间,且有值,值为0
 
0:是字符或数字
nil:是指针
null:是空值
 
可以举个例子吗?
谢谢!
 
基本同意楼上两位的说法!
但是,_xiaofeng兄,0何时为字符?
 
比如
var
Query1:TQuery;
Query1:=TQuery.create(nil);
var
s:string;
if s<>'you' then
s:=null
else
s:=0;
 
〉〉nil是指分配有地址空间,但没有值,
不同意这句:nil是指分配有地址空间,值是nil
 
null 是有地址空间,但没有值
nil 就是没有地址空间了
0 就不用解释了吧
 
如果我想判断一个日期型字段是否为空,应用什么
 
table1.fieldbyname('date').isnull
 
DELPHI5中所支持的NULL在DELPHI6中好象行不通了,
另外,我在我的网站上为大家新增了DELPHIB聊天室,现在刚起步,全靠大家来提高人气了。
网址是http://go.163.com/delphibbs 或 delphibbs.go.163.com
 
delphi 的null是一个variant(定义在system单元里),一般不要乱用,如
var hwnd:thandle=null;等.
nil是一个特殊的常量,可以这样认为 const nil:pointer=0;
以下是我定义const aa:pointer=0;后delphi给出的一个warning

Constant 0 converted to NIL

Description

The Pascal compiler allows the constant 0 to be used in pointer expresions
in place of NIL. This allows older code to compile with changes that were
made in the low-level RTL.
 
NULL: Variant类型,里面保存了一个值,此值即为NULL,注意并非是空,在Variant中有
   两个函数,一个用来判断是否为NULL(VarIsNull),一个判断是否为空(VarIsEmpty)
nil: 常数,表示未指向任何东西的指针。
0: 数字0啦,这里要说明一下的是,Windows API里的NULL,在delphi中就是0
 
:Z_JJ
你在精品作完广告又来这里作,嘻嘻
 
书上有:)
 
'0'这就是字符。
 
variant类型用什么表示空?
 
已经非常明白
 
to zqqa:
Unassigned
 
后退
顶部