rafy
asked on
Using threads
I need to write a simple program that uses another thread..
I've done this in C++ builder without any problems, but I seem to be getting something wrong doing this with Delphi..
Here's some of my code:
type
newthread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
public
procedure formrepaint;
end;
implementation
uses Unit1;
procedure newthread.Execute;
var
cont : boolean;
begin
cont := true;
while (cont) do
begin
Synchronize(Formrepaint);
if terminated then
cont := false;
end;
end;
procedure newthread.formrepaint;
begin
mainform.repaint;
end;
now, the problem I'm having is somewhere at the other end (I think)... in mainform, I have the code
var
other : newthread;
...
other.create(false);
...
{here I have some code that accesses and does some changes to the mainform}
...
other.destroy;
I'm certain that my mistake is a small and stupid one that would be obvious to someone who know how to use threads in Delphi... please HELP.
The program always crashes where I call the create method... what am I missing????
Thanks in advance...
I've done this in C++ builder without any problems, but I seem to be getting something wrong doing this with Delphi..
Here's some of my code:
type
newthread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
public
procedure formrepaint;
end;
implementation
uses Unit1;
procedure newthread.Execute;
var
cont : boolean;
begin
cont := true;
while (cont) do
begin
Synchronize(Formrepaint);
if terminated then
cont := false;
end;
end;
procedure newthread.formrepaint;
begin
mainform.repaint;
end;
now, the problem I'm having is somewhere at the other end (I think)... in mainform, I have the code
var
other : newthread;
...
other.create(false);
...
{here I have some code that accesses and does some changes to the mainform}
...
other.destroy;
I'm certain that my mistake is a small and stupid one that would be obvious to someone who know how to use threads in Delphi... please HELP.
The program always crashes where I call the create method... what am I missing????
Thanks in advance...
ASKER
The error I'm getting is a
"Access violation at address..."
Do I have to define create??
Note: I also get a compiler warning telling me that variable "other" may not be initialized (?)
"Access violation at address..."
Do I have to define create??
Note: I also get a compiler warning telling me that variable "other" may not be initialized (?)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Perfect!... I was so certain it was something simple like that... Thanks again
Also, there seems to be no reason for such a behaviour in the code you've posted... is that all?
Regards, julio