新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版用于讨论编程和软件设计的技巧
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 编程心得 』 → 这段程序有问题吗 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 10471 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 这段程序有问题吗 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     banono 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:6
      积分:69
      门派:GOOGLEBBS.NET
      注册:2006/7/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给banono发送一个短消息 把banono加入好友 查看banono的个人资料 搜索banono在『 编程心得 』 的所有贴子 点击这里发送电邮给banono 引用回复这个贴子 回复这个贴子 查看banono的博客楼主
    发贴心情 这段程序有问题吗

    这段程序有问题吗为什么不能运行
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TTBForm = class(TForm)
        ListBox1: TListBox;
        Button1: TButton;
        procedure button1click(sender:tobject);
      private
        { Private declarations }
        procedure threadsdone(sender:tobject);
      public
        { Public declarations }
      end;
      tlnithread=class(tthread)
      protected
        procedure execute;override;
      end;

    var
      TBForm: TTBForm;

    implementation

    {$R *.dfm}
    const
      maxsize=128;
    var
      nextnum:integer=0;
      doneflags:integer=0;
      globalarray:array[1..maxsize] of integer;

    function getnextnum:integer;
    begin
      result:=nextnum;
      inc(nextnum);
    end;

    procedure tlnithread.execute;
    var
      i:integer;
    begin
      onterminate:=TBForm.threadsdone;
      for i:=1 to maxsize do
      begin
        globalarray[i]:=getnextnum;
        sleep(5);
      end;
    end;

    procedure TTBForm.button1click(sender:tobject);
    begin
      tlnithread.Create(false);
      tlnithread.Create(false);
    end;

    procedure ttbform.threadsdone(sender:tobject);
    var
      i:integer;
    begin
      inc(doneflags);
      if doneflags=2 then
        for i:=1 to maxsize do
          listbox1.Items.Add(inttostr(globalarray[i]));
    end;

    end.


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/25 11:12:00
     
     banono 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:6
      积分:69
      门派:GOOGLEBBS.NET
      注册:2006/7/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给banono发送一个短消息 把banono加入好友 查看banono的个人资料 搜索banono在『 编程心得 』 的所有贴子 点击这里发送电邮给banono 引用回复这个贴子 回复这个贴子 查看banono的博客2
    发贴心情 
    下面是用临界区解决线程同步的问题,怎么也不能运行?555555,求助高手~~~~~~~~~~~~~~~~~
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TTBForm = class(TForm)
        ListBox1: TListBox;
        Button1: TButton;
        procedure Button1Click(Sender:Tobject);
      private
        { Private declarations }
        procedure ThreadsDone(Sender:Tobject);
      public
        { Public declarations }
      end;
      TIniThread=class(TThread)
      protected
        procedure Execute;override;
      end;

    var
      TBForm: TTBForm;

    implementation

    {$R *.dfm}
    const
      MaxSize=128;
    var
      NextNum:integer=0;
      DoneFlags:integer=0;
      GlobalArray:array[1..MaxSize] of integer;
      CS:TRTLCriticalSection;

    function GetNextNum:integer;
    begin
      Result:=NextNum;
      Inc(NextNum);
    end;

    procedure TIniThread.execute;
    var
      i:integer;
    begin
      OnTerminate:=TBForm.ThreadsDone;
      EnterCriticalSection(CS);
      for i:=1 to MaxSize do
      begin
        GlobalArray[i]:=GetNextNum;
        Sleep(5);
      end;
      LeaveCriticalSection(CS);
    end;

    procedure TTBForm.Button1Click(Sender:Tobject);
    begin
      InitializeCriticalSection(CS);
      TIniThread.Create(false);
      TIniThread.Create(false);
    end;

    procedure TTBform.ThreadsDone(Sender:Tobject);
    var
      i:integer;
    begin
      Inc(DoneFlags);
      if DoneFlags=2 then
        for i:=1 to MaxSize do
          ListBox1.Items.Add(IntToStr(GlobalArray[i]));
    end;

    end.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/26 8:50:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 编程心得 』 的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/3 18:37:44

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms