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.


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to