I've just worked on the problem a bit more. I think it definitively needs tobe done by threading. The code looks kind of like this:
 
procedure TForm1.Button1Click(Sender: TObject);
var
 m: TMoving;
 x,y,angle: integer;
begin
 m := TMoving.Create;
 m.ParentWindow := Handle;
 ShowM(m);   // makes the bitmap visible
 GetXY(x,y,angle);   // gets the parameters from another source
 Move(x,y,angle,m,GetTickCount)  // following procedure..
end;
 
procedure TForm1.Move(x,y,angle: integer; M: TMoving; time: integer);
begin
 if time = GetTickCount then begin
  CalcXY(x,y,angle);   // gets new coordinates
  UpdateM(M);          // updates bitmap coordinates
  Move(x,y,angle,M,GetTickCount+2)  // call itself with new time
 end else
  Move(x,y,angle,M,time)   // call itself with same time
end;
 
So, until time = GetTickCount the procedure will call itself. The trouble is that since my processor probably does a few million jobs in one milliseconds, the procedure will be called so much that a stack overflow will happen. The procedure will never get the chance to call itself again in 2 ms.
 
This could be solved if the calling procedure would be removed from the stack after the new one was called. How to do this?
 
Reading the help file I found out that TThread has something like activating on a signal, so this would probably be a better solution. However, as I already mentioned, I don't know how to use threads. :(
 
Gajo
_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to