책을 쭉보면 이해가 되거든요..실지로 코딩해 보니깐 에러가 나네요..
어떻게 해야할지 모르겠어요..좀 도와주세요..*^^*..
public
{ Public declarations }
function MyThread(P:pointer):Longint;Stdcall; 선언하구요..
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
쓰레드사용해서 함수호출
procedure TForm1.Button1Click(Sender: TObject);
var
hThread:THandle;
ThreadID:DWORD;
begin
hThread:=CreateThread(nil,
0,
@MyThread, <<**************************여기서 에러가나요..?
nil,
0,
ThreadID);
if hThread = 0 then
Application.MessageBox('쓰레드 생성실패','확인',0);
end;
그냥 함수호출
procedure TForm1.Button2Click(Sender: TObject); begin
Mythread(nil);
end;
이함수는 그냥 1에서 1000까지합을구해서 메모에 출력해주는 간단한..그쵸
function TForm1.MyThread(P:pointer):LongInt;StdCall
var
i,j:integer;
begin
j:= 0;
Memo1.Clear;
ProgressBar1.Position:=0;
for i:=0 to 1000 do
begin
inc(j);
form1.Memo1.Lines.Add(intTostr(j));
ProgressBar1.Position:=j;
end;
end;
원래 Class의 Method는 맨 처음 Object의 Pointer를 Stack에 Push하고 Call을 하게 되는데
thread function은 그렇게 하면 안됩니다.
체리 wrote:
> 책을 쭉보면 이해가 되거든요..실지로 코딩해 보니깐 에러가 나네요..
> 어떻게 해야할지 모르겠어요..좀 도와주세요..*^^*..
>
>
> public
> { Public declarations }
> function MyThread(P:pointer):Longint;Stdcall; 선언하구요..
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
>
> 쓰레드사용해서 함수호출
> procedure TForm1.Button1Click(Sender: TObject);
> var
> hThread:THandle;
> ThreadID:DWORD;
> begin
> hThread:=CreateThread(nil,
> 0,
> @MyThread, <<**************************여기서 에러가나요..?
> nil,
> 0,
> ThreadID);
> if hThread = 0 then
> Application.MessageBox('쓰레드 생성실패','확인',0);
> end;
>
> 그냥 함수호출
> procedure TForm1.Button2Click(Sender: TObject); begin
> Mythread(nil);
> end;
>
>
> 이함수는 그냥 1에서 1000까지합을구해서 메모에 출력해주는 간단한..그쵸
> function TForm1.MyThread(P:pointer):LongInt;StdCall
> var
> i,j:integer;
> begin
> j:= 0;
> Memo1.Clear;
> ProgressBar1.Position:=0;
> for i:=0 to 1000 do
> begin
> inc(j);
> form1.Memo1.Lines.Add(intTostr(j));
> ProgressBar1.Position:=j;
> end;
> end;
>