当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 最近一直为自己制作的相册软件(http://www.tonixsoft.com/ultraalbum/index.php?lang=chs)打开大文件时速度慢而郁闷,我以前的做法是先用TFileStream打开一个文件,然后在其中找到其中的数据段,把其中内容复制给一个TMemoryStream...
 

 

 ·发现delphi 2005的几个小bug    »显示摘要«
    摘要: 发现delphi" >delphi 2005的几个小bug这两天没事,又拿d2005试用了几次,总的感觉是:可能以前我对d2005的期望太高了!下面是发现的几个小bug:1、孪生的visual 新建一个vcl application, 在form上放置一个imagelist1组件,选中imagelist1,在object inspector中,把visual属性集折叠多次,你就会发现出现两个了&......
    摘要: +:ctrl+c - 保留原有的标记并拷贝的功能,增加将选中的代码块做为text和html两种格式拷贝到剪贴板 html保持原有的语法高亮设置+:ctrl+alt+shift+s - 按当前的语法高亮设置导出当前文件为html、rtf或文本格式+:alt+f12 - 在光标处插入当前的日期时间+:alt+space - 调用代码自动完成功能 ......


一个读取速度超快的FileStream!

最近一直为自己制作的相册软件(http://www.tonixsoft.com/ultraalbum/index.php?lang=chs)打开大文件时速度慢而郁闷,我以前的做法是先用tfilestream打开一个文件,然后在其中找到其中的数据段,把其中内容复制给一个tmemorystream,之所以要再将它复制给一个独立的tmemorystream是因为,后续处理的一个文件型数据库组件必须接受一整个tstream,作为其存储媒介,整个过程简直慢得无法忍受.

【程序编程相关:蛙蛙推荐:PB开发规范.doc

【推荐阅读:Delphi程序设计规范

之所以速度慢,是有两方面的原因: 【扩展信息:蛙蛙推荐:.net开发规范

1.用tfilestream打开文件,操作系统在打开文件后会为文件生成内存镜像,文件一大,那么开辟空间以及内存拷贝的工作就会变得极为缓慢.

2.将tfilestream中的一部分再复制给tmemorystream,这个复制过程会开辟新的内存再进行复制,理所当然内存大了,复制时间也会变长.

我决心针对目前我所遇到的问题,再写一个文件读取类,目前就叫tfastfilestream吧,它必须从tstream继承而来,这样才能与其它组件方便地结合起来.

首先,要解决的是打开大文件慢的问题,对于这个,使用mapviewoffile(),将文件直接当作内存镜像来访问就可以了,关于mapviewoffile(),以及文件内存镜像,可以参考这篇文章:http://www.vccode.com/file_show.php?id=2409

delphi下建立文件镜像的方法为:

constructor tfastfilestream.create(const afilename:string);

var

  filesizehigh:longword;

begin

  ffilehandle:=createfile(pchar(afilename),generic_read,file_share_read,nil,open_existing,file_attribute_normal,0);

  if ffilehandle=invalid_handle_value then begin

    raise fastfilestreamexception.create(error when open file);

  end;


...   下一页
 ·delphi2005的使用感受    »显示摘要«
    摘要: 2004年12月6日收到了borland寄来的试用版,第二天就在实验室的机器装了。安装的过程比较顺利,因为俺的机器原来就装了.net框架,只装了xml的一个补丁,安装2005的时间和delphi7差不多(我的机器为p4 2.0,512m),启动了久违已久的delphi2005,和delphi8的界面差不多,反正有些仿微软的嫌疑 看了菜单,c#,delphi for .net,delphi fo......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE