全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:843
推到 Plurk!
推到 Facebook!

一個線程錯誤問題

答題得分者是:mustapha.wang
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-07 11:15:00 IP:202.175.xxx.xxx 未訂閱
access violation at address 00426f0f in module'MHaccountiong.exe'.read of address 0000000e 
thread CODE
unit logout_thread;    interface    uses
  Classes, SysUtils, Forms;    type
  checkusername = class(TThread)
  private         { Private declarations }
  protected
    i: integer;
    procedure Execute; override;
    procedure checkuser;
  end;    implementation    uses mhacmain, mhacdata, DB;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,          Synchronize(UpdateCaption);      and UpdateCaption could look like,        procedure checkusername.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }    { checkusername }    procedure checkusername.checkuser;
begin
  i := i   1;
  frmAcMain.Edit1.Text := inttostr(i);
end;    procedure checkusername.Execute;
begin
  while true do
  begin
    i := 0;
    Synchronize(checkuser);
  end;
  { Place thread code here }
end;    end.
 
FROM1 CODE
 unit MhAcMain;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Menus, StdCtrls, Mask, wwdbedit, Grids, Wwdbigrd,
  Wwdbgrid;    type
  TfrmAcMain = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    Panel1: TPanel;
    N9: TMenuItem;
    N10: TMenuItem;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    buLogin: TButton;
    bulogout: TButton;
    N2: TMenuItem;
    N11: TMenuItem;
    edUserName: TEdit;
    edPassword: TEdit;
    pnlogin: TPanel;
    Meworngmessage: TMemo;
    N12: TMenuItem;
    Edit1: TEdit;
    procedure N8Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure buLoginClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MeworngmessageKeyPress(Sender: TObject; var Key: Char);
    procedure bulogoutClick(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    wronglogin: integer;
    procedure visibleTitle;
    procedure showSTR(s: string);
    procedure logout;
    { Public declarations }
  end;    var
  frmAcMain: TfrmAcMain;    implementation    uses MhAcItem, MhAcCtar, MhGood, MhLedger, MhAcData, DBTables, DB,
  MhEditlogin, StrUtils, Wwquery, logout_thread;
var ti: checkusername;    調用時用
     ti.Suspend;
停止時用
     ti := checkusername.Create(false);
     ti.Resume;
謝謝回答
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-07 13:18:11 IP:210.22.xxx.xxx 未訂閱
ti: checkusername;什么时候创建的,创建后执行时,frmAcMain.Edit1是否已经创建了?     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-07 15:37:05 IP:202.175.xxx.xxx 未訂閱
frmacmain是主板面,,edit1己經存在的 按一個鍵後執行thread 就出現錯誤信息
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-08 09:15:10 IP:210.22.xxx.xxx 未訂閱
下面两个问题先不看,我试了没有发现错误。 1.ti摧毁与否不谈, 2.MainForm关闭时,如果thread没有停下来,可能还是会访问到已经摧毁的MainForm。    你是不是没有按Button1就直接按了Button2???
var
  ti: checkusername;    procedure checkusername.checkuser;
begin
  i := i + 1;
  Form1.Edit1.Text := inttostr(i);
end;    procedure checkusername.Execute;
begin
  i := 0;
  while true do
  begin
    Synchronize(checkuser);
  end;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  ti := checkusername.Create(false);
  ti.Resume;
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  ti.Suspend;
end;
久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-08 17:32:50 IP:202.175.xxx.xxx 未訂閱
mustapha.wang多謝你的測試.. 現在成功了.確實如此..
系統時間:2024-07-01 2:41:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!