unit a
...type
TMyThread = class(TThread)
private
FDatFil: string;
FDatPat: string;
procedure sub;
protected
procedure Execute; Override;
public
constructor Create(datfil, datpat: string);
end;implementation{TMyThread}
procedure TMyThread.sub;
begin
...
end;procedure TMyThread.Execute;
begin
while not terminated do begin
synchronize(sub);
end;
end;constructor TMyThread.Create(datfil, datpat: string);
begin
inherited Create(false);
fdatfil := datfil; //程序执行到这里出错,错误的太概意思是不能访问
fdatpat := datpat; //程序执行到这里出错,错误的太概意思是不能访问
FreeOnTerminate := true;
end;end.请高手帮帮忙,在线等!!
...type
TMyThread = class(TThread)
private
FDatFil: string;
FDatPat: string;
procedure sub;
protected
procedure Execute; Override;
public
constructor Create(datfil, datpat: string);
end;implementation{TMyThread}
procedure TMyThread.sub;
begin
...
end;procedure TMyThread.Execute;
begin
while not terminated do begin
synchronize(sub);
end;
end;constructor TMyThread.Create(datfil, datpat: string);
begin
inherited Create(false);
fdatfil := datfil; //程序执行到这里出错,错误的太概意思是不能访问
fdatpat := datpat; //程序执行到这里出错,错误的太概意思是不能访问
FreeOnTerminate := true;
end;end.请高手帮帮忙,在线等!!
constructor TMyThread.Create(datfil, datpat: string);
begin
fdatfil := datfil;
fdatpat := datpat;
FreeOnTerminate := true;
inherited Create(false);
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;type
TMyThread = class(TThread)
private
FDatFil: string;
FDatPat: string;
procedure sub;
protected
procedure Execute; Override;
public
constructor Create(datfil, datpat: string);
end;
var
Form1: TForm1;
MyThread1:TMyThread;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
{-------------------调用线程-----------------------}
MyThread1 := TMyThread.Create('s','v');
with MyThread1 do
begin
FreeOnTerminate := True;
Resume;
end;
end;{ TMyThread }constructor TMyThread.Create(datfil, datpat: string);
begin
fdatfil := datfil;
fdatpat := datpat;
FreeOnTerminate := true;
inherited Create(false);end;procedure TMyThread.Execute;
begin
inherited;
while not terminated do begin
synchronize(sub);
end;end;procedure TMyThread.sub;
begin
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
end;end.
var
MyThread: TMyThread;
begin
MyThread.Create;
end;
编译时Delphi不会提示错误,调用Create时并未创建对象,所以私有变量并未分配存储空间,导致访问地址错误