[Lazarus] TRTLCriticalSection

Sven Barth pascaldragon at googlemail.com
Tue Feb 25 12:04:06 CET 2014


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.

Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20140225/03165b89/attachment-0003.html>


More information about the Lazarus mailing list