unit Unit2;
interface
uses
Classes,StdCtrls;type
TFuckYou = class(TThread)
constructor Create( var Memo1:TMemo;FuckStanm:String);
private protected
procedure Execute; override;
procedure WriteFuckYou();
public
M_Memo:^TMemo;
M_FuckSay:String;
end;implementation
constructor TFuckYou.Create( var Memo1:TMemo; FuckStanm:string);
begin
M_Memo:=@Memo1; //AV 错误
M_FuckSay:=FuckStanm;
Suspend();
FreeOnTerminate:=True;end;procedure TFuckYou.WriteFuckYou();
begin
M_Memo.Lines.Add(M_FuckSay);
end;procedure TFuckYou.Execute;
begin
Synchronize(WriteFuckYou);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
FuckA,FuckB:TFuckYou;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FuckA.Create(Memo1,'Fuck Your Mother');
FuckB.Create(Memo1,'Fuck Your!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
FuckA.Resume();
FuckB.Resume();
end;procedure TForm1.Button2Click(Sender: TObject);
begin
FuckA.Terminate();
FuckB.Terminate();
end;
end.
得到了正确答案分会加上去的. 我这样是避免浪费
interface
uses
Classes,StdCtrls;type
TFuckYou = class(TThread)
constructor Create( var Memo1:TMemo;FuckStanm:String);
private protected
procedure Execute; override;
procedure WriteFuckYou();
public
M_Memo:^TMemo;
M_FuckSay:String;
end;implementation
constructor TFuckYou.Create( var Memo1:TMemo; FuckStanm:string);
begin
M_Memo:=@Memo1; //AV 错误
M_FuckSay:=FuckStanm;
Suspend();
FreeOnTerminate:=True;end;procedure TFuckYou.WriteFuckYou();
begin
M_Memo.Lines.Add(M_FuckSay);
end;procedure TFuckYou.Execute;
begin
Synchronize(WriteFuckYou);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
FuckA,FuckB:TFuckYou;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FuckA.Create(Memo1,'Fuck Your Mother');
FuckB.Create(Memo1,'Fuck Your!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
FuckA.Resume();
FuckB.Resume();
end;procedure TForm1.Button2Click(Sender: TObject);
begin
FuckA.Terminate();
FuckB.Terminate();
end;
end.
得到了正确答案分会加上去的. 我这样是避免浪费
->
M_Memo:TMemo;
interface
uses
Classes,StdCtrls;type
TFuckYou = class(TThread)
constructor Create( var Memo1:TMemo;FuckStanm:String);
private protected
procedure Execute; override;
procedure WriteFuckYou();
public
M_Memo:TMemo;//此处改了
M_FuckSay:String;
end;implementation
constructor TFuckYou.Create( var Memo1:TMemo; FuckStanm:string);
begin
M_Memo:=Memo1; //此处我也帮你改了一下,没有必要用指针
M_FuckSay:=FuckStanm;
Suspend();
FreeOnTerminate:=True;
inherited create(true);//要增加这一句,进行唤醒线程,否则一创建就被执行线程
end;procedure TFuckYou.WriteFuckYou();
begin
M_Memo.Lines.Add(M_FuckSay);
end;procedure TFuckYou.Execute;
begin
Synchronize(WriteFuckYou);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
FuckA,FuckB:TFuckYou;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FuckA.Create(Memo1,'Fuck Your Mother');
FuckB.Create(Memo1,'Fuck Your!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
FuckA.Resume();
FuckB.Resume();
end;procedure TForm1.Button2Click(Sender: TObject);
begin
FuckA.Terminate();
FuckB.Terminate();
end;
end.
按照你的做法还是不行的
M_Memo:=Memo1; //此处我也帮你改了一下,没有必要用指针
begin
叼A:=T叼你.Create(Memo1,'叼你妈');
叼B:=T叼你.Create(Memo1,'叼你');
end;
本来想写详细一点的,
不过存在在FU等詞,居然不让回复
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
Fu_ckA,Fu_ckB:TFu_ckYou;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Fu_ckA.Create(Memo1,'Fu_ck Your Mother');
Fu_ckB.Create(Memo1,'Fu_ck Your!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Fu_ckA.Resume();
Fu_ckB.Resume();
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Fu_ckA.Terminate();
Fu_ckB.Terminate();
end;end.unit Unit2;
interface
uses
Classes,StdCtrls;type
TFu_ckYou = class(TThread)
constructor Create(Var Memo1:TMemo;Fu_ckStanm:String);
private
M_Memo:TMemo;//此处改了
M_Fu_ckSay:String;
protected
procedure Execute; override;
procedure WriteFu_ckYou();
end;implementation
constructor TFu_ckYou.Create(Var Memo1:TMemo;Fu_ckStanm:String);
begin
M_Memo:=Memo1; //此处我也帮你改了一下,没有必要用指针 M_Fu_ckSay:=Fu_ckStanm;
Suspend();
FreeOnTerminate:=True;
inherited create(true);//要增加这一句,进行唤醒线程,否则一创建就被执行线程
end;procedure TFu_ckYou.WriteFu_ckYou();
begin
M_Memo.Lines.Add(M_Fu_ckSay);
end;procedure TFu_ckYou.Execute;
begin
Synchronize(WriteFu_ckYou);
end;
end.
你觉得这个指针你分配内存了吗?