我的DFW离线阅读器(1.03) (100分)

  • 主题发起人 copy_paste
  • 开始时间
C

copy_paste

Unregistered / Unconfirmed
GUEST, unregistred user!
Download:
(失效:
http://61.132.118.185:8080/dispdocnew.php?id=4669
http://61.132.118.185:8080/datanew/myreader1.03.zip)
原来的playicq失效,改:
http://new.playicq.com/datanew/myreader1.03.zip
MyReader 1.03
增加贴子收藏的功能。
修改全文查找时,以空格分隔进行AND查找(以前是OR查找)//打错,是AND查找

基本上,这个RichEdit版本只能做成这个样子了,除了在线查看DFW数据外和新
增数据库外,但此RichEdit不想再做下去了,因为如果需要的话,我会重建数据格
式,因为做到后面,发觉数据还可以再精简一点,即转换出来的数据可以再小一点,
再快一点。不过这个会留到2.0版本,当然2.0版本会和1.XX版本的数据格式不相同,
而且会用WebBrowser来写,因为需要做在线查看、在线升级(想法),做起来可能
会费点时间。
不过都是想法。。。留待以后吧。
copy_paste
2003-05-13 0:21
----------------------------------------------------------------------------
MyReader是将DFW的离线数据库进行转换成自定义格式的文件处理的。
在转换过程的过程中,根据数据库的大小来决定转换时间,我转换200M的大概用了4-5分
钟(CPU使用时间),产生出来的文件大概160M左右,600M的用了11-15分钟,转换后450M,
呵呵,节约。。哈。
LetterIndex.dat为索引文件,记录了对应的Topic, Letter, Content数据在各自文件的
偏移(Offset),然后直接定位到那里进行读取,又因为LetterIndex是加载到内存中,所以
查找的速度是N快,最大的问题就是LetterIndex太大时,MyReader所占用的内存会。。。
全文查找时,是分Topic, Content进行查找,因为都只是些字符串,所以也不是费很大力气
吧,和数据库的区别就是直接将内容读取出来,并不需要像数据库先"Select * ...",呵。
--------------------------------------------------------------------------
增加一些功能吧,如支持多关键字查询,不过只是处理了 or 的功能,没有加 and的功能,以后吧。。。
加入Delele topic的功能(其实就是置一个标志位,以后就不读取了),不太想写数据增加的功能,一个字,发现进行软件升级是个苦差事。。。
不太想升级了。。。如果各位有兴趣的话,不妨接着写下去。。。
copy_paste
2003-05-01 15:03
---------------------------------------------------------------
修正了一些查找的BUG,现在速度是N快了,呵呵。。。Enjoy。。。
如果你已经使用1.00转换了数据库,请再转换一次,因为改了Content.dat
的结构。。。(别生气,俺光转那个200M的Access数据库,不小于15次。。
。)
现在全文查找速度。。。:D
copy_paste
2003-04-29 18:42
--------------------------------------------------------------------
俺一直写代码不写注释,所以,如果觉得代码这个这个很难看的话,就不
好意思了。。。
程序是先将数据库的内存转换成自定义格式的文件进行的。。。所以刚开
始使用的时候,需要进行转换工作,指定目录,用于存放转换工作后的自定
义文件,再进行配置数据源,连接DFW离线数据库。。。可能离线数据库的数据量可能比较大,所以转换的时间可能比较慢
,我这个数据库
是Access, 210M左右,转换大概用了4分钟左右。。。
转换完成后,就可以使用了,现提供的功能只有树列表和查找,树里面的
东东就不说了,查找一直是离线阅读器的重点,我用的这近200M的数据库,
全文查找大概只是不到10秒钟吧。。。当然可能我找的东西比较什么。。。
呵。
我前段用了CHM的离线数据(大概200M),发现打开非常慢,后来DFW又有
人写了一个阅读器,用了查找的功能,发现也是N慢(要N分钟),所以决定
自己写一个试试,现在感觉还不错ing...
树列表的功能,在打开的时候比较慢,没办法,现在还没想到比较好的方
法来解决。。。
好像只要加载树的子树一多,速度就N慢了,不过,俺一般不太用第三方组
件,所以也不去管了。。。
如果在使用的过程,能说一下BUG,或者能帮忙改进一下,多谢,给我一份
可否?
写了几天,头比较大ing...
 
更改一下,刚才写的时候才发现在Room中没有“全部”,
在RefreshRoom函数中加一句话:
procedure TMainForm.RefreshRoom;
var
I: Integer;
R: TRoomData;
N: TTreeNode;
begin
RoomList.Items.begin
Update;
DirTree.Items.begin
Update;
with DirTreedo
try
Items.Clear;
RoomList.Items.Clear;
// 加一句
RoomList.Items.AddObject('全部', Pointer(0));
for I := 0 to FReader.RoomCount - 1do
begin
R := FReader.Rooms;
RoomList.Items.AddObject(R.Room, Pointer(R.ID));
N := Items.AddChildObject(nil, R.Room, NewRoom(R.ID));
Items.AddChild(N, '');
end;
RoomList.ItemIndex := 0;
finally
Items.EndUpdate;
RoomList.Items.EndUpdate;
end;
end;
 
谢谢!帮你up
 
先下载看看。
 
程序已经不太想升级了。。。如果各位有兴趣的话,不妨接着写下去。。。
因为俺都是拿来找点东西的,所以,如果没什么俺想到的话,俺也就懒的写了。。。
[:D]
 
代码写得不错,没有注释也不要紧...
 
up ,支持
 
从技术上来说写得挺不错的
建议大家有兴趣的话下载源代码研究一下。
作为离线浏览器来用的话,易用性及界面美化方面还要提高。
 
俺的界面方面是比较臭的说。。。
而且说白了,其实俺是想做来自己用的方便,自已想找点东西,看了其它的全文查找都比较
慢,所以就自己写了个,慢慢写就写成这个样子了。。。[:D]
 
多人接受答案了。
 
顶部