积累日常生活的点滴,开发过程的心得。

Delphi中获取时间范围

今天写的一个报表要取时间范围,我首先到DateUtils单元中找了找,发现一个MonthSpan好像比较符合我的要求,看了看帮助,突然发现Delphi中的

 MonthSpan的算法是将两个日期之间的天数除以一个每月平均天数算出来的,而不是我想要的两个日期的月份相减,险些上当,只好自己写了一个函数来完成。看了看其他的类似方法如MonthBetween等也有类似问题,以后使用时一定要看看源码才敢用(即便是Borland公司写的函数也有问题的说)

 

HtmlHelp2 真tmd的变态

为了制作一个完善的HtmlHelp2的项目,整整花了我三个晚上,总算摸到了一点点门道,虽然不是特别完美,但总算是可以凑合着用了。HtmlHelp2真是有点复杂的变态,最烦的莫过于手工编辑MSI数据库了:(

检查DotNet Framework是否已经安装

检查注册表键是否存在 HKLM\SOFTWARE\Microsoft\,NetFramework\Policy\v1.1

检查$WinDir\Microsoft.NET\Framework\目录是否存在

创建QuickReport的自定义函数

n年没有用QuickReport了,最近要用它写报表,中间写一个复杂的报表表达式时,觉得太复杂了,决定自己写一个QuickReport的自定义函数。QuickReport的函数实现方法还是挺简单的,只要从TQREvElementFunction基类派生,并实现Calculate方法就可以了,所有传进来的参数可以通过Argument方法获取。

function TQREvAcountFunction.Calculate: TQREvResult;
var
strDeType:string;
function GetResultType:TQREvResultType;
begin
Result:=resDouble;
end;
function ZeroResult:TQREvResult;
begin
Result.Kind:=resDouble;
Result.dblResult:=0;
end;
begin
if (ArgList.Count = 2) and (Argument(0).Kind = resString) and ((Argument(1).Kind=resDouble) or (Argument(1).Kind=resInt)) then
begin
strDeType:=Trim(Argument(0).strResult);
if MatchType(strDeType) then
Result := Argument(1)
else
Result :=ZeroResult ;
end else
Result := ErrorCreate(Format(SqrExpWrongArguments, ['Account Function'])); // Do not translate
end;

const
SqrDesc = 'Returns <X> or 0 depending on the <Type>';
SqrSoft = 'Sysa';
initialization
RegisterQRFunction(TQREvEtcFunction,'Etc', 'Etc(<Type>, <Count>)|' + SqrDesc, SqrSoft, '2SN');

唯一要注意的是RegisterQRFunction的第四个参数是一个字符串,2表示统计函数,S表示第一个参数是字符串,N表示第2个参数是数字。

Norton真tmd烂

以前对Norton的印象还算不错,不过自打装了Norton2005之后,发现我的机器整个慢了一个数量级,打开Office文档的时间够我喝杯茶的,另外它带了一个Internet Security的狗屁软件,速度狂慢,每次机器开机时,这东西加载数据要花5分钟。我今天实在是忍无可忍,无须再忍,将他们彻底从我的机器上清除了出去。经过这回不愉快的经历,我发现还是瑞星的杀毒和防火墙好一些,系统资源的占用小多了。

百度没有前途

以前我的网站来自百度的访问量大概有10-20%,但是后来直线下降,一直不明白为什么。最近上百度搜索医院,突然发现一个熟悉的小医院排名居然排在第一位,我老婆是做在线广告的,告诉我该医院买了百度的搜索排名的服务,所以能排在前面,联想到很久以前一些知名的搜索引擎厂商就因为卖搜索排名,把自己的名声搞臭了,结果Google异军突起。联想到现在的百度,老这么搞的话,我担心下场好不了。

 

FireFox越来越流行了

我的个人网站访问者,中firefox的用户从2%增加到了4%

 昨天看了一个流量在1200独立ip的欧洲网站的统计,firefox的用户在20%以上了。ie的用户才50%(不算myie这类工具)

不过maxthon和myie在国外用的还不是很多,虽然在国内占了20%左右。



 

 

把Bbclone升级了一下

感觉除了界面漂亮了一点之外,别的没什么新东西

.Net Framework中一个拙劣的设计

Toolbar响应按钮点击事件不是为每个Button定义一个OnClick事件,而是要求你在ButtonClick事件中统一进行处理,这会导致一种很糟糕的编程风格:

if (e.Button==btn1)
do1;
else if (e.Button==btn2)
do 2;
....

可以想像如果你的工具条上有20多个按钮,你的ButtonClick事件中会堆满了一堆乱草 Sad

其实,原来我对这个糟糕的设计并不是那么气愤,真正让我气愤的是因为微软那个傻X工程师的设计间接导致我写的一个控件对于ToolbarButton的绑定无效。这个意外又将花费我一些时间去研究,强烈鄙视作者!

使用Infopath和SharePoint进行信息采集

部门中经常需要让大家填写工作周报、日报等等,填写完之后进行汇总是一个比较麻烦的事情。

今天试验着用InfoPath和SharePoint做了一下,感觉不错。首先就是用InfoPath建一个表单,然后发布到SharePoint的表单库。建好后,发一个Email给大家,让大家填写。填写后,用Merge Form的功能就可以将这些表单进行汇总。另外,SharePoint还支持对InfoPath的过滤,全文检索,分组等功能,还可以对某个表单的修改监视。

同步内容