linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
在DELPHI中用线程排序
[ 作者:  加入时间:2007-10-30 15:41:06  来自:Linux联盟收集整理 ]
在数据处理量很大的情况下,如何在数据处理的同时响应用户操作?Windows95/98和WindowsNT作为多线程的多任务操作系统,其调度单元是线程,即线程是系统分配处理器时间资源的基本单元,所以我们可以利用线程实现在处理大批量数据的同时响应用户操作。eQHLinux联盟
eQHLinux联盟
   DELPHI作为一个优秀的开发平台,对开发多线程应用程序提供了强有力的支持,即可直接利用32位Windows环境提供的Win32API接口函数 CreateThread,也可利用DELPHI中提供的BeginThread函数。在下面例子中,正是使用了DELPHI提供的TThread。 eQHLinux联盟
eQHLinux联盟
  一.基本的方法如下: eQHLinux联盟
eQHLinux联盟
  1.从Tthread类派生一个新类。(创建TSortThread类) eQHLinux联盟
  2.定义新类的Create方法。 eQHLinux联盟
  3.定义新类的Execute方法,并在Execute方法中插入线程运行时执行的码。 eQHLinux联盟
  4.引用类方法创建实例。 eQHLinux联盟
eQHLinux联盟
  二.例子的详细代码及说明: eQHLinux联盟
eQHLinux联盟
  首先,新建一个单元,保存为mysort.pas.在此单元中,我们创建了一个TSortThread类,它从TThread类中继承而来,所以当我们在程序中创建这个类的一个实例时,也就是创建了一个新的线程。 eQHLinux联盟
eQHLinux联盟
  接着,在该类中定义一个Sort方法,用来对数组进行排序,同时TSortThread类超越了TThread类的构造方法Create和Execute,在execute方法中,调用了对数组进行排序的Sort方法。具体代码如下: eQHLinux联盟
eQHLinux联盟
eQHLinux联盟
  unitmysort; eQHLinux联盟
  interfaceeQHLinux联盟
  usesClasses;
//TThread类在Classes中被定义。 eQHLinux联盟
  typeeQHLinux联盟
  PSortArray=TSortArray; eQHLinux联盟
TSortArray=array.[0..MaxIntdivSize? eQHLinux联盟
Of(Integer)-1]ofInteger; eQHLinux联盟
  {此处定义了TsortThread类} eQHLinux联盟
  TSortThread=class(TThread) eQHLinux联盟
  PrivateeQHLinux联盟
  {在TSortThread类中定义了如下几个私有变元} eQHLinux联盟
  FSortArray:PSortArray; eQHLinux联盟
  FSize:Integer; eQHLinux联盟
  FA,FB,FI,FJ:Integer; eQHLinux联盟
  ProtectedeQHLinux联盟
  {类TSortThread超越了类Tthread的Execute方法} eQHLinux联盟
  procedure Execute;override; eQHLinux联盟
  {类TsortThread添加了一个Sort方法} eQHLinux联盟
  procedure Sort(varA:arrayofInteger); eQHLinux联盟
  public eQHLinux联盟
  {类TSortThread超越了类Tthread的构造方法} eQHLinux联盟
  constructorCreate(varSortArray:arrayofInteger); eQHLinux联盟
  end; eQHLinux联盟
  implementationeQHLinux联盟
  constructorTSortThread.Create(varSortArray:arrayofInteger); eQHLinux联盟
  begineQHLinux联盟
    FSortArray:=@SortArray; eQHLinux联盟
    FSize:=High(SortArray)-Low(SortArray)+1; eQHLinux联盟
    FreeOn Terminate:=True; eQHLinux联盟
    inheritedCreate(False); eQHLinux联盟
    end; eQHLinux联盟
  {当线程开始时,Execute方法将被调用。} eQHLinux联盟
  procedure TSortThread.Execu? eQHLinux联盟
te; eQHLinux联盟
  begineQHLinux联盟
    Sort(Slice(FSortArray,FSize)); eQHLinux联盟
    end; eQHLinux联盟
  {下面实现了冒泡法排序} eQHLinux联盟
  procedure TSortThread.Sort(varA:arrayofInteger); eQHLinux联盟
  var eQHLinux联盟
  I,J,T:Integer; eQHLinux联盟
  begineQHLinux联盟
    for I:=High(A)downto Low(A) do eQHLinux联盟
    for J:=Low(A)to High(A)-1 do eQHLinux联盟
    if A[J]>A[J+1] theneQHLinux联盟
    begineQHLinux联盟
      T:=A[J]; eQHLinux联盟
      A[J]:=A[J+1]; eQHLinux联盟
      A[J+1]:=T; eQHLinux联盟
      if Terminated then Exit; eQHLinux联盟
      end; eQHLinux联盟
    end; eQHLinux联盟
  end.
eQHLinux联盟
eQHLinux联盟
  最后,在用户应用程序的implementation处加入usesmysort,在执行排序的地方加入 TQuickSortthread.Create(SortArray),其中SortArray为一实际的数组。这样就可以用线程实现排序,在排序过程中,用户不必等到排序结束就可以执行其它操作。这种用多线程实时响应用户操作方法在涉及大量数据处理的应用程序中显得尤为重要。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Delphi实现远程串口的数据采集  (2007-10-30 16:10:39)
 ·Delphi托盘编程实战演练  (2007-10-30 16:09:56)
 ·DELPHI中操作ACCESS技巧集  (2007-10-30 16:08:48)
 ·在DELPHI中打印TDBGrid内容  (2007-10-30 16:05:41)
 ·在Delphi 2005中安装组件  (2007-10-30 16:04:02)
 ·DELPHI组件安装全攻略  (2007-10-30 15:54:19)
 ·Delphi中树型控件的使用技巧  (2007-10-30 15:41:50)
 ·Delphi的嵌入式asm: Byte快速转换为16进制  (2007-10-30 15:40:20)
 ·创建一个简单的Delphi专家  (2007-10-30 15:14:08)
 ·Delphi下的接口编程学习笔记  (2007-10-30 15:11:56)