======================================================
注:本文源代码点此下载
======================================================
1.关于sizeof
同样的代码
varlwindcode : array [0..15] of char;
begin
showmessage(inttostr( sizeof(lwindcode)));
end;
在delphi7和delphi2009下结果分别是16/32,为什么?
这是因为widechar和ansichar的问题,2009默认的是widechar了,而delphi7是ansichar,导致string的长度也发生了变化!以后要注意了!
2.关于assigned
assigned只是判断当前值是否为空,而不判断当前指着的内存是不是被释放,因此释放的时候要这样写:
if assigned(frm) then
begin
frm.close;
frm:=nil;
end;
或者
if assigned(frm) then
begin
frm.close;
freeandnil(frm);
end;
3.关于assert(断言)
用法:assert(表达式);
如果为假, assert会产生一个eassertionfailed异常,显示信息为:
assertion failed (c:\src\unit1.pas, [size=+0]line 34)
当你不想再使用这些检查时,可以使用 {$assertions off} 或 {$c-} 编译指令.
要想使assert在整个项目中失效,关闭project options | compiler | assertion 选项
缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
用法总结与注意事项:
1)在函数开始处检验传入参数的合法性
2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
3)不能使用改变环境的语句,因为assert只在debug个生效,如果这么做,会使用程序在真正运行时遇到问题。
4)assert和后面的语句应空一行,以形成逻辑和视觉上的一致感
5)有的地方,assert不能代替条件过滤
4.关于owner和parent的区别
parent属性是指构件的包容器,构件只能在此范围内显示和移动
owner属性是指构件的所有者,它负责构件的创建和释放。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/