一个设计优良的试题库系统,除了支持文本数据以外,还应该支持公式.图片.表格等非文本数据,这样才能很好地支持已有的试题形式.笔者前一阵子使用过一个“xxx考核题库系统”,该软件使用paradox作为数据库,只能支持文本题目,无法满足现实试题的要求,为此对其进行了更改.
对于非文本数据的支持可以采用ole嵌入word文档的方法,但这种技术实现起来比较复杂,本文给出一种简单而实用的方法:非文本数据用rtf文档导入到存储,编辑器采用richtextbox.richtextbox是微软提供的一个activex,导入到delphi中之后,使用起来就同其他组件一样方便.richtextbox可以很好地支持文本.公式.图片.表格等,而且它有一个textrtf属性可供访问,可以把这些文档元素自动转为rtf字符串.比如把richtextbox1的内容赋给richtextbox2时,只需要richtextbox2.textrtf := richtextbox1.textrtf就可以了. 【程序编程相关:delphi2005探讨之二 】 【推荐阅读:COM 中的服务器和对象(翻译) 】 另外非文本数据往往数据量比较大,因此可以在输入到数据库时可以进行数据压缩,而在导出时进行还原,从而减少存放数据量,而又不影响使用. 【扩展信息:通过api和键盘钩子彻底屏蔽任务条和开始】 结合这两点,可以这样实现非文本数据的处理:试题内容用word或者写字板编辑后加载到richtextbox中,在richtextbox中可以进行必要的编辑.存储到数据库时先得到richtextbox的textrtf字符串,经过压缩后存储到数据库.而生成试卷时从数据库中读出字符串,然后解压得到原来的textrtf字符串,加载到richtextbox中,而后就可以用来进一步的处理得到图文并茂的试卷. 压缩时可以使用zlib来压缩(要引用zlib单元),然后使用下面两个函数. 压缩函数 function mycompress(str: string): string; var ... 下一页