[fpc-devel] procedure Types
Michael Van Canneyt
michael at freepascal.org
Mon Mar 13 11:17:22 CET 2006
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 at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>
>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
More information about the fpc-devel
mailing list