gougou's blog

运行时切换窗体样式

1.这两天写的一个程序中一个窗体在某些时刻需要是一个MDI的子窗体,某些时刻又要是一个模态窗体,但是在运行时刻将

FormStyle从fsMdiChild改成fsNormal会导致窗体显示时不自然的闪烁一下,后来发现将窗体的默认属性设置为fsNormal,

同时Visible设定为False,在作为MDI窗体显示时,设置FormStyle为fsMdiChild就不会闪烁了。

2.如果要修改MDI的窗体显示大小和位置,一定要在OnShow事件中修改,否则会有闪烁。

发布Sqlite Developer 2.24

这一版本增加了对Sqlite3.3.8的可加载扩展和虚拟表的支持

下载地址

http://www.sharpplus.com/downloads/SqliteDev224.zip

Antlr的错误恢复机制

Antlr的错误恢复机制很重要,有利于写出很健壮的Parser,比如一般的单行注释需要有回车符号,但是有时用户在程序的最后会输入没有回车符号的单行注释,我们的Parser也要考虑这种情况

可以使用状态维护方式来处理这类不完整的Token,在Lexer中添加下列方法。

int state;

int getState() {
return state;
}

void resetState() {
state = 0;
}

 

将单行注释的语法由原来的

发布Sqlite Developer 2.21

修改了一些Bug,增加了查看主键索引,支持编辑命名的约束条件

下载地址 http://www.sharpplus.com/downloads/SqliteDev221.zip

为Source Insight添加SourceSafe的控制命令

  1. 首先确保你的Source Insight的ProjectSettings中的Project Source Folder和你的代码所在的根目录一致。
  2. 然后,点击Options / Custom Commands来添加自定义的版本管理命令添加Check In 命令
    • Run中输入命令行SET SSDIR=\\XXXX\VSS; SET SSUSER=chen; ss cp \;ss cp ProjectFolderName;ss Checkin $%r,替换ProjectFolderName为你的项目所处的VSS的目录名,设定SSDIR为SourceSafe的配置文件所处的共享目录名。
    • Dir输入框中输入%d
    • 去掉Pause When Done选项
  3. 依次添加Check out,Get Last Version等命令即可

游客系列之四:注册机制与破解(转贴CNSW)

游客系列之四:注册机制与破解

国庆,喝了半瓶茅乡宴,52度,没醉,闲着没事,继续游客系列。

除非你故意想让破解者破解你的软件,或者对破解根本不在意,不然对防破解还是花一点心思的。不过故意要破解者破解软件的也可以看这篇游客系列,浪费不了你的时间——反其道而行即可。

防破解比之两年之前容易多了——我感觉,因为大家都浮躁多了,做技术最忌讳浮躁,搞破解的既然宣称他们是在搞技术,那么这两年因为浮躁,技术下降了不少。之前阿达也发过帖子分享防破解经验,我悄悄应用了,发现很实用,最近也没有搜索我的软件的破解版情况,因为我自己也发布破解版,不过根据注册情况来看,应该是没有注册机出现。

客套话

公司里面有个销售经理,比较喜欢说客套话,见到公司同事的父母总喜欢说“您生了个好儿子”之类的,见到同事的老婆就喜欢说“你找了个好老公”,结果前几天碰到我老婆,说了一句“你可生了个好儿子”。Foot in mouth

发布Sqlite Developer 2.15

这一版本主要是修改了一些bug

下载地址 http://www.sharpplus.com/downloads/SqliteDev215.zip

Antlr中的Semantic Predicates

有些时候由于Antlr不是真正的LL(K)算法,会产生二义性的代码,这时需要我们手工来编写LookAhead的判断语句。这就用到了Semantic Predicates

 

语法结构为{XXXX}?,示意如下

Syndicate content