通过使用PaxScript可以为Delphi应用增加对脚本的支持。
PaxScript支持paxC,paxBasic,paxPascle,paxJavaScript(对ECMA-262做了扩展) 四种脚本语言。它们分别是对应语言的子集。
在为程序增加脚本支持时要解决的主要问题是:本地代码与脚本之间的互相调用。
PaxScript为四种脚本语言都增加的名字空间和模块的概念。某段代码必须属于某个名字空间。执行代码时要指定代码所属的模块。默认的名字空间是全局名字空间。
通过使用PaxScript可以为Delphi应用增加对脚本的支持。
PaxScript支持paxC,paxBasic,paxPascle,paxJavaScript(对ECMA-262做了扩展) 四种脚本语言。它们分别是对应语言的子集。
在为程序增加脚本支持时要解决的主要问题是:本地代码与脚本之间的互相调用。
PaxScript为四种脚本语言都增加的名字空间和模块的概念。某段代码必须属于某个名字空间。执行代码时要指定代码所属的模块。默认的名字空间是全局名字空间。
Delphi中有将窗体持续化的函数
Phi中可以加载一个DFM文件,然后动态创建DFM对应的窗体。这样就不用手工敲代码创建了。只不过DFM只能包含Phi中的控件。
获取ActionScript 类信息的另类方法:
前一阵写了个提取 ActionScript 类中符号信息的脚本。算是可用。
用于混淆效果还行。
今天突然想到,在ActionScript中可以用
public function describeType(value:*):XML
flash.util.describeType(KlassName)
获得类的详细信息:
(对于类的每个方法)名称、参数的数量、返回类型和参数类型
这样,就可以写一个类,将其他类的信息都打印出来。
但是,ActionScript工程中无法操作本地文件,只能trace到调试窗口。
为了给ZoOmeAsure(ZA)截图还真费了一番功夫,因为它就是我最常用的截图工具。。
ZoOmeAsure=Zoom & Measure。来自Photoshop中的两个工具: 放大镜和尺子。
因为在做网页时需要精确测量尺寸,经常要做的是: 截屏->打开PS->Zoom->Measure打开Photoshop代价巨大,而我所找到的屏幕尺子大多都是模拟真实的尺子,很不方便所以就写了个小工具来完成这个工作ZA启动快速,可以整个屏幕截图,然后操作就跟PS中一样了,基本的快捷键和PS默认基本相同可以保存局部为图片,也可以直接将局部拷贝到剪贴板中目前还没有发布,正在研究滚动截屏 (我舍友说,他最需要的就是一个能滚动截屏的小截图工具)
扫描局域网内所有主机(禁止ping的主机无法显示)起初是为了查当前网段可用的IP,增加手动设置IP的成功率,之后有了 NuTs IWantIP就基本不用了不过用来查主机与IP映射还是很快的程序采用多线程,速度很快~
科大专用上网登录程序学校校园网实行实名制,每个同学上网都要到特定网页输入学号和密码,这本来挺好的,可问题是,当用户关机的时候如果不注销帐号,那么当下次开机,IP改变后,无法访问任何网页,提示说帐号被上一个IP占用,而上一个IP如果恰好又被别人使用,那么那个人就可以使用你的帐号上网. 而你只有哭的份了 (幸好学校上网不收费)于是我写了这个登录/注销程序. 程序会在关机/重启/注销时自动注销上网帐号,这样就可以避免上述问题.程序还可以定时检测网络连通性(ping baidu.com)并刷新arp缓存. 这样可以解决arp欺骗导致的无法上网的问题.(宿舍楼的arp欺骗很严重~)这个程序还是很好用滴,不过在离开科大后就再也用不上了.科大的同学可以在 http://city.ibeike.com 的编程板块(还是软件,我忘了)找到下载
总体来说
inclusion/using clause
#include <iostream>
using namespace std;
import java.io.*;
uses windows,system,sysutils;
inheritance
class Child:[public | protected | private] Fahter,public Mother{
...
}
C++是这三种语言中继承最为复杂的.
分为 public,protected,private继承,同时支持真正的多继承
public继承(又称类型继承)和java的继承一样,保持父类的访问控制
protected继承将父类public成员改变为protected的
private继承(又称实现继承)不直接支持父类的公有接口,而提供自己的公有接口
所以private继承中,子类将父类中原先的protected成员和public成员都置为private的
所以原则上private继承中的子类应该是继承树中的叶节点,它只有private和public成员而
没有protected成员.它不应该再被继承,类似于Java中的final class
class Child extends Father implements IInterface{
...
}
TChild = class(TFather,IInterfacedObject)
...
end;
java 和 delphi 的继承相似,都是单继承同时可以实现多个接口
Access Control/Organization
class Foo{
private:
int i;
int j;
void f();
protected:
int k;
public:
int o;
}
class Foo /* extends Object */ {
private
int i;
int j;
void f(){...};
protected
int k;
public
int o;
}
TFoo = class(TObject)
private
i:Integer;
j:Integer;
protected
k:Integer;
public
o:Integer;
publicshed
property
Tag:Integer read i write i;
end;
如果不给出访问控制,
c++默认是private
java默认是包内可见的
delphi默认是public的(单元内可见?)
c++的访问控制和代码管理最为丰富:
可以通过#include包含c/cpp头文件,提供向c的兼容
同时可以使用名字空间防止名字冲突,并且像c一样将代码分为头文件和实现文件
同时丰富性也带来了复杂性.使得c++的文件组织没有java和delphi清晰
java提供了松散的代码组织方式–包(package),而delphi提供了单元的代码组织方法
这两种组织方法相似,都是给了我们一个存放一组相关类的地方.而这个地方,在java中
是一个文件系统上的文件夹,在delphi中是一个单元文件
相比之下,我还是喜欢Delphi的组织方法:当类很多的时候java包中的文件变得既多又不好管理