九大功能(IP阻塞,CC攻击,线程限制,防盗链,URL重写,代码过滤,信息过滤,SQL注入防护,上传攻击防护)IDC网站天使(IDCWebAngel)1.0.0.7正式版发布!
作者:admin 日期:2008-06-30
龙、龙、龙 ——献给所有消失在这个世界上的生物
作者:admin 日期:2008-06-27
转自:路西法地狱 作者:朱学恒
“人类虽然聪明到能够消灭许多的物种,但是,到目前为止,还没有办法救回任何一个被他们灭绝的族类。”——Gerald Durrel,《CATCH ME A COLOBUS》
龙枪系列中出现了很多的巨龙,他们有的是善良的,有的是邪恶的,有的老眼昏花,有的年轻激进,都让人对于这些活在传说中的生物感到好奇。我们自称龙的传人,皇帝要穿龙袍,喝酒有景德镇的著名瓷器“九龙公道杯”,端午节还可以划龙船;而西方的龙则是看守金苹果,把守伊甸园,任意吞吃无辜的人类,是魔王撒旦的使徒,几乎每一个功成名就的英雄都必需要宰上一两个才行。不过,这个带着极重神秘色彩的传说生物到底是怎么诞生的,而东方和西方又各有着什么样的传说呢?就让我们来看看吧!
“人类虽然聪明到能够消灭许多的物种,但是,到目前为止,还没有办法救回任何一个被他们灭绝的族类。”——Gerald Durrel,《CATCH ME A COLOBUS》
龙枪系列中出现了很多的巨龙,他们有的是善良的,有的是邪恶的,有的老眼昏花,有的年轻激进,都让人对于这些活在传说中的生物感到好奇。我们自称龙的传人,皇帝要穿龙袍,喝酒有景德镇的著名瓷器“九龙公道杯”,端午节还可以划龙船;而西方的龙则是看守金苹果,把守伊甸园,任意吞吃无辜的人类,是魔王撒旦的使徒,几乎每一个功成名就的英雄都必需要宰上一两个才行。不过,这个带着极重神秘色彩的传说生物到底是怎么诞生的,而东方和西方又各有着什么样的传说呢?就让我们来看看吧!
Delphi嵌入式汇编一例
作者:admin 日期:2008-06-27
用delphi写的程序,把x指针指向的4个字节次序颠倒过来:
function toulong(x: pchar): longword;
begin
result := (longword(x^) shl 24) or
(longword((x + 1)^) shl 16) or
(longword((x + 2)^) shl 8) or
function toulong(x: pchar): longword;
begin
result := (longword(x^) shl 24) or
(longword((x + 1)^) shl 16) or
(longword((x + 2)^) shl 8) or
Tags: Delphi嵌入式汇编一例
Delphi编程技巧十则
作者:admin 日期:2008-06-27
Delphi作为一门新起的Windows编程语言,由于其集
众多的优秀特性于一身,因而越来越得到广大编程人员和
发烧友的青睐。以下十则技巧涉及的面比较广泛,希望能
够对Delphi的爱好者有所裨益。
1.类似于vb.中的doevents功能。
众多的优秀特性于一身,因而越来越得到广大编程人员和
发烧友的青睐。以下十则技巧涉及的面比较广泛,希望能
够对Delphi的爱好者有所裨益。
1.类似于vb.中的doevents功能。
Tags: Delphi编程技巧
回调函数与Delphi的事件模型
作者:admin 日期:2008-06-27
回调函数:回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按照回调函数地址调用该函数。这种方式,调用者在一个线程,被调用者在另一个线程。在Windows API中有一些函数使用回调函数,例如CreateThread、SetWindowLong等。对应的回调函数定义为如下形式:function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;procedure ThreadFunction(Ptr: Pointer);stdcall;消息:消息也可以看作是某种形式的回调,因为消息也是在初始化时由调用者向被调用者传递一个句柄和一个消息编号,在约定的事件发生时被调用者向调用者发送消息。这种方式,调用者在主线程中,被调用者在主线程或者工作线程中。Delphi事件模型:在Delphi的VCL中有很多可视化组件都是使用事件模型,例如TForm的OnCreate事件,其原理是:在设计时指定事件函数,在运行时事件触发,则会调用在设计时指定的事件函数。在机制上,Delphi事件模型与回调是一样的。但具体形式有些区别,纯的回调函数是全局函数的形式,而Delphi事件是对象方法的形式,即可以定义如下回调函数类型typeTCallBackFunc = procedure (pData: Pointer) of object;这就使得Delphi事件只能在Delphi内部使用,而回调函数是可以跨语言的。另外还要注意,回调函数一般(在Delphi的组件是在主线程中)是在回调体中创建的线程,因此要有临界区保护。
Tags: 回调函数 Delphi事件模型
如何为Delphi程序添加事件和事件处理器
作者:admin 日期:2008-06-27
Delphi是一种功能很强的可视化程序开发工具。我们在使用Delphi开发WINDOWS 应用程序的过程中,虽然Delphi为每个可视化组件都提供了很多属性(Property)和事件(Event),但在实际应用中可能会碰到一些自己需要的特殊事件,这些特殊事件Delphi 又没有提供,这时我们就需要为应用程序添加这些特殊事件。当这些事件发生后,又能马上调用处理这些事件的过程。本文通过实例来说明如何为应用程序添加事件和处理事件的过程。
在Delphi中,事件实际上是专门化的属性,它是一个过程(procedure)的指针。要添加事件,首先应在所定义的类中说明一个用来指向事件过程的指针,该指针的作用是当事件一旦发生,就通过这个指针执行所指向的处理这个事件的过程。最后通过指定符 published公布定义的事件属性以及与之关联的事件处理过程指针。
本例中,FtooBig为定义的事件处理过程指针,OnTooBig为事件属性名。事件处理过程指针FtooBig通过程序的初始化使之指向过程TooBig1。在Delphi的表单(Form1)上放置三个编辑框,分别为Edit1、Edit2和Edit3,放一按钮Button1。程序中设私有整型变量val1、val2和res,变量res用来记录val1和val2的乘积,并用Edit3显示出来。当通过Edit1和Edit2输入的数据有一个大于100时,会触发一个事件,并调用事件处理过程TooBig1显示一个对话框,说明此事件已经发生并已进行处理。源程序代码如下, 该程序在Delphi 3中调试通过。
unit Unit1;
在Delphi中,事件实际上是专门化的属性,它是一个过程(procedure)的指针。要添加事件,首先应在所定义的类中说明一个用来指向事件过程的指针,该指针的作用是当事件一旦发生,就通过这个指针执行所指向的处理这个事件的过程。最后通过指定符 published公布定义的事件属性以及与之关联的事件处理过程指针。
本例中,FtooBig为定义的事件处理过程指针,OnTooBig为事件属性名。事件处理过程指针FtooBig通过程序的初始化使之指向过程TooBig1。在Delphi的表单(Form1)上放置三个编辑框,分别为Edit1、Edit2和Edit3,放一按钮Button1。程序中设私有整型变量val1、val2和res,变量res用来记录val1和val2的乘积,并用Edit3显示出来。当通过Edit1和Edit2输入的数据有一个大于100时,会触发一个事件,并调用事件处理过程TooBig1显示一个对话框,说明此事件已经发生并已进行处理。源程序代码如下, 该程序在Delphi 3中调试通过。
unit Unit1;
Delphi代码风格约定
作者:admin 日期:2008-06-27
探究如何判断Delphi中的对象指针是否可用
作者:admin 日期:2008-06-27
近日,在网上看到有网友问曰:如何确定一个对象指针是否可用?也就是说,如何确定一个对象指针是否指向一个真正可用的对象实例?其实这本不应该成为一个问题。因为对于程序设计者来说,他应该能够控制自己的程序不去访问一个无效的指针,因为所有的对象实例的创建和销毁都在他控制之下。并且即便没有一个直接的办法来判断对象指针是否可用,也可以通过其他间接的途径(比如使用一些标识等)来做到这一点(比如当我们销毁一个对象实例后,我们将对象指针的指置为nil)。但是假如我们抛开以上所说的这两点不谈,单单来研究在Delphi中,究竟有没有办法来判断一个对象指针是否可用,那情况会如何呢?
在Object Pascal中,一个类可以有两种类型的方法,一种称为对象方法(Object Method),另一种是类方法(Class Method)。所谓对象方法,指的是方法的定义是针对对象(或称实例)的,因此调用该方法需要基于某个对象(或称实例),比如类的析构函数Destroy就是一个对象方法(其实我们经常用到的绝大部分方法都是对象方法)。而类方法,指的是方法的定义是基于一类对象而言,因此调用该方法不需要基于特定的对象实例,比如类的构造函数Create就是如此。这一点,对我们有些启发。判断一个对象指针是否可用,似乎可以通过以下步骤来完成。首先,我们可以判断该对象指针是否是nil,如果是,那么大功告成,确定不可用无疑;如果否,那么尝试执行该对象的某个对象方法,看看是否出现诸如无效内存访问等的异常,由此来判断该对象是否可用。用如下代码来验证我们的想法:
var
在Object Pascal中,一个类可以有两种类型的方法,一种称为对象方法(Object Method),另一种是类方法(Class Method)。所谓对象方法,指的是方法的定义是针对对象(或称实例)的,因此调用该方法需要基于某个对象(或称实例),比如类的析构函数Destroy就是一个对象方法(其实我们经常用到的绝大部分方法都是对象方法)。而类方法,指的是方法的定义是基于一类对象而言,因此调用该方法不需要基于特定的对象实例,比如类的构造函数Create就是如此。这一点,对我们有些启发。判断一个对象指针是否可用,似乎可以通过以下步骤来完成。首先,我们可以判断该对象指针是否是nil,如果是,那么大功告成,确定不可用无疑;如果否,那么尝试执行该对象的某个对象方法,看看是否出现诸如无效内存访问等的异常,由此来判断该对象是否可用。用如下代码来验证我们的想法:
var
Tags: 指针







