On Mon, 13 Mar 2006, Amir Aavani wrote:


Any idea to call:
BeginThread (@MyObject.F1, Pointer (S))

You can't do this. MyObject.F1 is a method, not a procedure.

You should do something like:

Function MyThreadProc(P : Pointer) : Integer;

begin
  TMyObject(P).F1;
end;

and call

BeginThread (@MyThreadProc,(MyObject))

(don't remember the exact form of the thread function.)

Or better yet, use TThread.


Michael Van Canneyt wrote:

On Sat, 4 Mar 2006, Amir Aavani wrote:


I have problem with procedure Types.
Look at the following code:

TProcedure= procedure (S: String);
TTest= class
MyF: TProcedure;
procedure F1 (S: String);
procedure F2 (S: String);
....
...
end;

TTest.constructor ;
begin
MyF:= @F1;
end;

it says it can't cast "Procedure (S: String); Object" to TProcedure. The
problem is clear but I don't know
(can't find) any solution to define TProcedure as a procedure of a class which
accepts one argument.


Try the following (note the 'of object' in the declaration):

Type
 TMyStringProc = procedure (S : String) of object;

and then
x
 MyF : TMyStringProc;

This is documented.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel



_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to