线程里面主要代码如下:
constructor showpic.create(im_name: timage; beg_sno: integer; end_sno: integer; sleep_time: integer);
begin  inherited Create(false);  begsno := beg_sno;
  endsno := end_sno;
  sleeptime := sleep_time;
  gb_bool := true;
  im := im_name;
  FreeOnTerminate := true;
  gb_bool := true;
end;procedure showpic.Execute;
begin
  xianshipic();
end;procedure showpic.xianshipic;
var
  i: integer;
  beg_sno: integer;
  end_sno: integer;
  i_m: timage;
  sleep_time: integer;
begin
  { Place thread code here }
  beg_sno := begsno;
  end_sno := endsno;
  sleep_time := sleeptime;
  //gb_bool := true;
  while gb_bool do
  begin    for i := beg_sno to end_sno do
    begin
      im.Picture.LoadFromFile('f:\test\新建文件夹\bmp\' + inttostr(i) + '.bmp');
      sleep(sleep_time);
      application.ProcessMessages;
    end;  end;
end;
程序调用命令如下: showpic.create(image1, 8000, 8021, 20);
  showpic.create(image2, 8000, 8021, 20);
但不知道为什么,在Windows2003 执行时老是报“ntdll.dll”错误,不知道该如何处理,请各位大侠帮帮忙,谢谢!!!

解决方案 »

  1.   

    type
      showpic = class(TThread)
      ......
      private
        FIndex : Integer;
        ......
      end;procedure showpic.Execute;
    var
      beg_sno: integer;
      end_sno: integer;
      i_m: timage;
      sleep_time: integer;
    begin
      beg_sno := begsno;
      end_sno := endsno;
      sleep_time := sleeptime;
      //gb_bool := true;
      while not Terminated and gb_bool do
      begin
        for FIndex := beg_sno to end_sno do
        begin
          Synchronize(xianshipic);
          sleep(sleep_time);
        end;
      end;
    end;procedure showpic.xianshipic;
    begin
      im.Picture.LoadFromFile('f:\test\新建文件夹\bmp\' + inttostr(FIndex) + '.bmp');
    end;
      

  2.   

    线程中操作可视控件,需要同步,synchronize,创建线程单元时有说明
      

  3.   

    Visual Graph是一套强大的交互图形开发平台,她能非常方便地建造基于图形的界面、制作各种图形元件、实现图形管理、图形建模、制作监控系统、表单系统、绘图系统、流程设计、CAD软件等。她提供功能非常强大的ActiveX控件,和其他流行的编程语言共同工作,极大地弥补了这些语言在图形处理方面的不足。也可以嵌入IE浏览器中,实现网上图形编辑和控制等。http://www.visual-graph.com