25

原来在delphi ,我用的是7
new不但是过程,还是函数
本来是手误
var p:pVar;
p:=new(pvar) 和new(p)是一样的。
打开cpu窗口,产生的汇编代码是一模一样的。
帮助中说new 是一个procedure
第一句逻辑意义正确,第二句简练。

标签:,

22

英文大小写,不低碳。从计算机编程的角度来说,我们不得不花大量的时间来处理字符的大小写比较、转换。而且占用26个ascii码表,本来可以用来填充火星文的。一个完全没有必要的选择。
也许有一天,聪明的英文语系的人会去掉大写字母。

标签:

11

from:http://justcoding.javaeye.com/blog/547384
想弄个iis rewrite模块,找了个文章,录于下。

Apache的Mod_rewrite学习 (RewriteCond重写规则的条件)收藏
RewriteCond Syntax: RewriteCond TestString CondPattern [flags]   RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。  TestString是一个字符串,除了包含普通的字符外,还可以包括下列的可扩展结构: (全文…)

标签:,

8

如何编程实现ISAPI筛选器 (呆呆abingle.com原创文章,欢迎保留作者信息转载)

本文将详细地讲解如何制作isapi筛选器,以iis6.0为实验平台,结合实例代码,讲讲isapi(isapiFilter)筛选器制作。水平有限,有些地方谨凭主观臆测。

isapi传统意义应该是isapiExtention,是与cgi(但比cgi效率高)相并列的一组概念,与filter是两种完全不同的概念。这是微软一种不负责任的定义,Internet Server Application Programming Interface,不做深究。

isapifilter是iis的一种回调机制。

做一个dll,只要实现两个导出函数就可以被iis加载。
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
ver是一个纪录,传递描述和一些参数(80-ssl类型,优先级,以及需要得到的通知类型)
Function HttpFilterProc(Var pfc: THTTP_FILTER_CONTEXT;NotificationType: DWORD; pvNotification: pointer): DWORD; Stdcall;
pfc是一个当前过滤器的环境纪录,notificationtype,就是上面所说的通知类型,pvnotification一个数据指针,依据不同的通知类型而有不同的定义。

上面两个导出函数实现了就可以正常工作。
Function TerminateFilter (dwFlags : DWORD): BOOL stdcall;
这个也可以导出,用于iis释放filter时做一些清理收场工作,可有可无。

下面为代码:
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
Begin
Ver.lpszFilterDesc := ‘dyydyysoft For iis5-6′;
Ver.dwFilterVersion := MakeLong(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
Ver.dwFlags := SF_NOTIFY_NONSECURE_PORT //非ssl
Or SF_NOTIFY_SECURE_PORT //ssl
Or SF_NOTIFY_ORDER_DEFAULT //缺省优先级,按照msdn上说 ,default应该是中优先级,但isapi4中为low,可以手工修正。当然也无所谓,优先级只是排定几个isapifilter加载时的顺序,谁也不会往筛选器上加几个,影响iis效率的。
Or SF_NOTIFY_URL_MAP ;//拦截的通知类型,这里指定了,才会在后面的httpfilterproc回调中得到宿主iis的通知。
Result := True;
End;

delphi中怎么导出函数呢?export or exports 有什么区别? 其实我也不明白。查看帮助,其实export是16位编程用的导出函数的方法,而32位编程用exports导出。
所以function a();bool;stdcall;export;不能导出函数,只是为了向前兼容,要用exports导出。如下:
exports funca,funcb;

好了,下面是一个完整的代码,编译后只有15.5K,只是简单注册了下通知,而没有实际功能。
_____________________________________________________________________

library IISfilter;
uses ISAPI4,Windows;
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
Begin
Ver.lpszFilterDesc := ‘dyydyysoft For iis5-6 abingle.com’;
Ver.dwFilterVersion := MakeLong(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
Ver.dwFlags := SF_NOTIFY_NONSECURE_PORT //非ssl
Or SF_NOTIFY_SECURE_PORT //ssl
Or SF_NOTIFY_ORDER_DEFAULT //缺省优先级,按照msdn上说 ,default应该是中优先级,但isapi4中为low,可以手工修正。当然也无所谓,优先级只是排定几个isapifilter加载时的顺序,谁也不会往筛选器上加几个,影响iis效率的。
Or SF_NOTIFY_URL_MAP ;//拦截的通知类型,这里指定了,才会在后面的httpfilterproc回调中得到宿主iis的通知。
Result := True;
End;
Function HttpFilterProc(Var pfc: THTTP_FILTER_CONTEXT;NotificationType: DWORD; pvNotification: pointer): DWORD; Stdcall;
begin
Result := SF_STATUS_REQ_NEXT_NOTIFICATION;//继续处理。
end;
Exports
GetFilterVersion,
HttpFilterProc;
begin
end.
_______________________________________________________________________________________

(全文…)

标签:,

 
© 呆呆的博客