in the borland delphi help 2006 :
Note that a write lock operation is not atomic. Data in protected
memory will always be in a consistent state when BeginWrite returns,
but is not necessarily in the same state as when BeginWrite was
called. As a rule, a thread should always discard previous samples
from protected memory after promoting a read lock to a write lock.
However, the calling thread can determine whether a state change has
occurred by examining return value of BeginWrite: true if protected
memory has not be written to by another thread, false if another
thread may have modified protected memory.
Here, i will be appreciated with an example for Understanding the
thanks in advance