易截截图软件、单文件、免安装、纯绿色、仅160KB

关于delphi Assigned

关于delphi Assigned
1.根据 Delphi 指令参考手册中
说明:
Assigned 函式在参数不为nil时传回True,表示指针已经指到某个内存地址,这个内存地址可能是一个对象地首地址,也可能在函数或过程中,声明一个指针变量,没有赋值为nil ,无乱的指向某处,这两个种情况,Assigned(指针变量)都不为nil , 函数放回True;
而参数为nil时则传回False。
Assigned 并不是一个真正的函数。
技巧:
用呼叫 Assigned 的方式来取代直接把参数拿来和nil比较,效率会更好。
 
2.这个问题要从内存方面来解释
当你建构一个物件 SomeComponet.Create(Owner);
系统会有一个指针指向这个对象
当你解构一个物件 SomeComponet.Free;
系统会将指针指到的东西杀掉,但是指标还是指在相同的位置
请注意计算机的资源是有限的,
所以可能下一步你的程序要跟系统要资源,
刚才的指针位置,就出现了其它的数据
If Assigned(SomeComponet) then SomeComponet := nil;
先检查这个对象有没有在其它地方被设成 nil,
然后再将它设成 nil 。
当我们无法预测使用者会如何操爆他的计算机,
程序员必须留意内存的管理。 小弟浅见...
3
function Assigned(var P): Boolean;
Description
Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. Assigned(P) corresponds to the test P<> nil for a pointer variable, and @P <> nil for a procedural variable.
Assigned returns False if P is nil, True otherwise.
检查指针指向的参考变量或过程是否为nil
每次我通常的处理方法都是:
if assigned(frm) then frm.close;   但是当下次调用时就会出错。为什么呢,直到咋天我才知道原因
frm.close;frm.free; 只是指定这块内存可以重写,并未释放为NIL 因此当下次调用时即使frm.free已经
执行过assigned(frm)仍为TRUE,再次释放 frm.Close 或者 frm.free 肯定会报错;应为frm.Close或frm.free 是释放 对象指针frm 指向的内存空间,在上次已经释放调了,但是 frm 本身并没有 初始化为 nil ,相反它还是指向被释放的内存地址;东西已经没有了,没有地东西去释放,不报错错才怪。
正确的处理方法:
if assigned(frm) then
begin
   frm.close;
   frm:=nil;
end;
或:
if assigned(frm) then
begin
frm


相关文档:

Delphi下实现包含通配符的文本查找

本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-21351-1.htm,相关文件可以在上述地址的页面中下载。转载时请注明出处。
一、前言
通配符就是指“*”和“?”两个字符,“*”表示当前位置可以没有或者有多个任意字符;“?”表示当前位置有一个任意字符。 ......

Delphi调试DLL 不能调试 不能进入调试 注意!!!

如何调试DLL,在这里就不再赘述了,但是,今天就碰到了一个特别奇怪的问题,参数设置正确,就是不能调试?? 通过上网查资料,发现了问题,注意:
  1, 将Project主菜单的Project Options对话框的Compiler页面Debugging选项中的 Debug informaton、Local symbols、Assertions复选框选中
  2,将Tools主菜单的D ......

delphi指针简单入门:


    
 指针用法的例子:  
  1         var  
  2             X,   Y:   Integer;       //   X   and   Y   整数类型  
  3       &n ......

delphi实现批量读取格式有规律的文本文件的内容.

现有一系统不定时在同一目录下生成一批txt文件,内容大概如下;
      20100112_164910,6,81406392,808,113,,
为方便统计,需要将这些txt文件中的数据读入数据表中.
现有两种方法:
   一是直接将数据读入到数据表中的某一列中,再用sql 语句拆开成几列: 
     ......

DELPHI 让窗体不在任务栏显示

需要用到的一个函数:
LONG SetWindowLong(
HWND hWnd,
int nIndex,
LONG dwNewLong
);
其中nIndex GWL_EXSTYLE     Retrieves the extended window styles.
dwNewLong   WS_EX_TOOLWINDOW     Creates a tool window; that is, a window intended to ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号