[Lazarus] TRTLCriticalSection

Michael Van Canneyt michael at freepascal.org
Tue Feb 25 12:11:27 CET 2014



On Tue, 25 Feb 2014, Sven Barth wrote:

> Am 25.02.2014 11:22, schrieb Antonio Fortuny:
>       Hi Folks.
>
>       Lazarus 1.0.2, FPC 2.6.2, Win32 and Linux x86_64
>       Something goes wrong with TRTRCriticalSection. There is a difference between Windows and
>       Linux.
>       In a program which will run on Win32 and Linux x86_64, using threads and all this stuff I
>       need to protect some code from multi-threading access.
>       One critical section looks enough to do the job.
>       So i code this in Win32 and Linux:
> 
> [snip]
>       On the above line marked as compilation error the compiler complains with the message
>       autoupdateserverthread.pas(255,48) Error: Call by var for arg no. 1 has to match exactly:
>       Got "TRTLCriticalSection" expected "QWord"
>       winapi.inc(650,11) Hint: Found declaration: InitializeCriticalSection(var QWord);
>       winapi ??? Why on Linux ?
>       No way to get rid of this compilation error
>       In Win32 the program compiles and runs without errors.
>
>       Some help would be appreciated.
> 
> The function for initializing a TRTLCriticalSection is InitCriticalSection, not
> InitializeCriticalSection. If you wouldn't use the Windows unit you'd have seen this error on Windows
> as well.
> 
> @Michael: maybe we should add a seealso for the Init-/Enter-/Leave-/DoneCriticalSection functions to
> the documentation of the TRTLCriticalSection type.

Will do.

Michael.





More information about the Lazarus mailing list