Rich Explorer V3.0发布:支持XML动态更新(0分)

  • 主题发起人 左轻侯
  • 开始时间

左轻侯

Unregistered / Unconfirmed
GUEST, unregistred user!
下载地址:
http://go1.163.com/~onekey/soft/re30.zip
readme.htm:
Rich Explorer V3.0 简介
作者:左轻侯
我的信箱:qinghou@china.com
个人主页:“无双谱”http://onekey.yeah.net
大富翁地址:http://www.delphibbs.com
1、简介
2、版权
3、运行
4、编译
5、XML功能

1、简介
Rich Explorer是一个用于阅读大富翁论坛离线数据库的软件。
基于ADO接口,理论上支持任何提供ADO驱动的数据库。
支持多关键字(以空格键分开)查询;
支持自定义SQL;
不再使用临时文件,而是直接将html字符串读入webbrower中;
支持HTML页面的保存和打印(有BUG,尚未修正);
支持基于XML的异构数据库同步。
2、版权
遵循GPL协议,免费,源代码公开,你可以修改代码或将它添加到自己的程序中去。
但修改后的程序源代码必须公开(详见GPL)。
如果你改进了程序,请给作者发一份代码。
作者保留版权。
3、运行
需要Microsoft的数据库驱动包(MDAC)。可以到MS的站点或作者主页下载。
需要安装Microsoft的MSXML 3.0,用于解析XML。该软件会在您访问大富翁站点
的时候自动安装。也可以访问MS的站点或大富翁,手动下载安装。
程序从exe文件所在目录中读取strconn.txt文件,并将其内容
作为adoconnection 的ConnectionString。请修改此文件以配置你的数据源。
如果没有找到strconn.txt文件,那么会在所在目录下寻找delphibbs.mdb文件
并打开。如果delphibbs.mdb文件也找不到,则报告初始化数据库错误。
理论上来说,只需要修改strconn.txt文件,即可支持任何ADO支持的数据库。
已经在access97/2000、Interbase6(通过ODBC)、 SQL Server 2000下测试通过。
[注意]必须将letters表中的id,parent,subject,Roomid,Datetime,UseFrom
等字段设置索引,否则可能导致速度缓慢、记录重复、死机等后果。
由于离线数据包已经非常庞大,使用Access已经相当缓慢,因此作者强烈使用
SQL Server、Interbase之类的大型SQL数据库。
必须注意的是:
本版本默认为Access优化,如果需要运行于其它的数据库,请将DM中的DSLocal
控件的CursorLocation的属性改为clUseClient,并重新编译。但这种做法在
Access中会极大降低速度。
可以通过改动style.css文件来定制显示的字体,例如,如果你使用1024*768的分
辨率,可以将table的字体改为10.5pt。
4、编译
没有使用任何第三方控件,可以在标准的delphi环境下进行编译。
必须先导入MSXML的ActiveX对象。
作者在Delphi 5 + MSXML 3.0 + windows 2000下编译通过。
5、XML功能
Rich Explorer从V3.0之后支持基于XML的动态更新功能。
Rich Explorer的更新功能以天为基本单位来进行。
例如2001-5-18这一天,指的是2001-5-18 00:00:00到2001-5-18 23:59:59
这一段时间范围。用户指定的各种时间范围,都会被自动分解成若干天的任务,
然后在一个循环中执行。这种设计的原因是大富翁论坛限制每次最多返回的
记录数不能超过5000。
Rich Explorer具有自动定位时间点的功能。在更新某一天的记录时,程序会
自动查找本地数据库中当天的最后一个贴子,并以它的时间为当天的时间起始点。
举例来说,当用户更新2001-5-18的贴子的过程中,因故中止。下次继续更新
2001-5-18的贴子时,程序会先在本地数据库中查找属于2001-5-18的最后一张
贴子。如果该贴子的时间是2001-5-18 10:23:15,那么程序将自动更新从
2001-5-18 10:23:15到2001-5-18 23:59:59的所有记录。
这种设计的好处是实现了类似于断点续传的功能,用户可以随时中止下载并
继续更新过程。
不要忘记在本地数据库中为letters表的datetime字段设置索引,否则定位时间点
的操作会变得很慢。

本程序在不断升级中,欢迎来信交流。
2001.5.19 湖南娄底

 
太好了,非常感谢!
 
期待功能:支持新的两级分类和问题的排序。
显示方面:有没有考虑过不生成 html 给 webbrower 显示,
而是生成 xml,利用 msxsl 的 xslt 功能来生成 html(会有skin 功能了),
或者用 xslt 转换成 txt 文件,或者 pdf 文件(这个更妙)。
接收数据时出错,原因是您的 README 没有说明要手工建个 tmpdata/ 目录。
 
这个问题我也正想问来着
大富翁开始使用两级分类,但离线数据库的结构并没有变化,是否应该增加一个
grouplist之类的表?
用xml做显示界面是下一个版本的目标
Zip包里有一个tmpdata目录,只要解压了整个包,应该会有这个目录啊
 
程序已经更新,支持二级分类和connstr的保存,修正了一些问题
但是出现了问题:
本来我是使用以前版本的数据库(rooms表没有group字段),为了
支持二级分类,使用了新的数据库(data7.zip里面的数据库)
1、
发现这个数据库里的rooms和letters表都有一个名为msrepl_synctran_ts
的二进制字段,而且不能为NULL,所以数据更新失败
必须手工将这个字段改为允许NULL或删除,才能更新
2、
Interbase不允许字段名为group,因此除非改动数据库结构或程序代码,
否则不能同时支持Interbase了:-(
这个是EXE文件+源码下载
http://go1.163.com/~onekey/soft/re30.zip
这个是我做的一个范例数据库,只有4000多条记录(940K),都是这两天最新的
我改动了数据库结构,跑这个数据库没有问题
http://go1.163.com/~onekey/soft/delphibbs.zip
 
紧急修正了一个大BUG:所有的问题分数都是0
原因是解析XML的时候写错了一个字段
下载地址不变
 
左大师,小生下载了你的阅读器,用过的感觉不怕你笑话,我自己的那个阅读器不管哪一
方面都没你的好,但的速度却不知比你的快多少倍。
  小生今天刚下了一个DiamondADO.v1.86.Full.Sources访问ADO的控件,并进行了简单
测试,速度非常快,已帖了。如果感兴趣可以去看看,ID=537576。如果不感兴趣就不浪费
你金钱了!
 
基于DiamondADO 1.86的Rich Explorer已经做出来了,打开分类的速度好象没有什么提高,
但查找的速度的确快很多
我研究一下先
 
左兄: 你那个GROUP字段问题,可以在写SQL的时候,把GROUP写成[GROUP],就可以了。
我在SQL SERVER下已经成功了。
 
老大啊,好象3.0有问题吧,我设连接到sql server后整天说不能连接啊!!!
而2.0是可以的
 
吴兄:
我也试过用[GROUP]是没有问题,但是在Interbase下好象根本不能用GROUP做字段名
我用datadump导入新表时,字段名自动变成了GROU_,改也改不过来
honghs:
估计你遇到的就是那个ROOMS表的结构问题,你导入新版的ROOMS表看看
 
msrepl_synctran_ts 是 SQL Server 给加上的,
大概用来记录备份信息.完全可以删除.
我发布的 Interbase 离线数据包改成了 GROUP_,恐怕是不能同时支持Interbase了,
但如果是 Interbase,我们期待不用 ADO/ODBC 的版本, 用 IBX 之类的控件.
左兄:请增加选择收股票的服务器的功能,即可以自动或者手动配置连接
chkl.asp, getl.asp 的 url,我们马上要设立一批服务器来发数据.免得主服务器被整死.
 
老板:没问题。
RE 3.1正在开发中,有两个重大改进:
1、彻底告别所有的ADO控件,使用原生ADO对象完成所有的数据库操作
装上DiamondADO之后,报错不断,一气之下,让Diamond ADO和ADO
Express都去S,自己createOleObject……
其实用Delphi通过Interface直接访问ADO并不是很难,只是不能使用
可选参数了,另外对variant变量的处理也走了不少弯路。
2、使用特殊的算法实现了本地缓存,彻底解决了数据集的ForwardOnly
问题,同时仍然支持RecordCount。
用原生ADO就不能再使用DataAware控件了,因此用一个StringGrid
代替了DBGrid(又回到RE 1.X了)。缓存的方法很简单,不是由数
据集主动填充Grid,而是在Grid的DrawCell事件里到数据集中去取
数据,已经填充的就不必再取了。这样ForwardOnly就完全没问题了。
先使用一个select count操作实现RecordCount。
RE 3.1的速度有了极大的提高。
测试:mdb文件包含离线包1~7,大小158M,letters数据量37万条。
有关索引均已设置。
初始化数据库(打开第一个分类时)需要30秒左右的时间,此后打开
任何一个分类小于2秒,按标题查找小于5秒。
这个速度让我觉得已经没什么必要再测试Sql Server了。在Sql Server
和Interbase下也都已经通过(Interbase手工改动了一下源码)。
正在修修补补,我会尽快上传。这几天处于持续亢奋状态……
 
所以嘛,我对DiamondADO根本不抱希望,我也是把所有adoexpress换成DiamondADO后,
错误不断,根本没办法运行下去,只好把DiamondADO k了了事。
 
RE 3.1提供下载:
http://go1.163.com/~onekey/soft/re31.zip
服务器列表的功能暂时还没有实现,我会尽快加进去
有问题请尽快反馈给我
 
to 左轻侯:
编译你的新版离线浏览器需要“MSXML2_LIB.dcu”,请问到哪里找?
还有一个问题:
虽然将DSLocal控件的CursorLocation的属性置为clUseServer在打开分类时比置为clUseClient快
一丁点,但却会导致查询速度极大降低,请看我的数据:
扬赛338,128MRAM,Win98se,装有Access 2000,离线数据截至2001.4.18,已全部合并且转为
Access2000格式,建有索引,按发信人查找“zfh”,两种情况下分别编译的离线浏览器(2.1版
base on ADO)耗时分别为4分钟和1分40秒。
 
错了,应该是“MSXML2_TLB.dcu”。
 
zfh:
需要在Import ActiveX中导入MSXML对象
你那个速度肯定有问题,无论如何也不可能需要4分钟(全文查找都够了)
我再试一下
 
的确是4分钟,我只把你的源程序作了上述一处改动后重新编译,速度即有如此的差距。
你不必看绝对速度,这相对于我的机器来说是正常的。
对了,我用过的离线浏览器(包括你的所有版本)都有一个毛病,就是在切换不同数据库
文件时,速度太慢,特别是当你打开一个数据库并且点了分类之后,如果再打开其它库文件,
其速度便无法忍受了。我的解决办法是,在切换时屏蔽掉tv1chang。
 
没有必要增加分类表了,rooms 中有个字段叫 group
先做一个 select distinct [group] from room 就可以了。
zip 包中没有tmpdata目录。
 
顶部