[Lazarus] tail on windows

Hans-Peter Diettrich DrDiettrich1 at aol.com
Mon Jul 19 09:17:46 CEST 2010


dmitry boyarintsev schrieb:
> On Mon, Jul 19, 2010 at 4:23 AM, Marc Weustink <marc at dommelstein.net> wrote:
>> You need to make sure a file exists. IIRC it is not possible to create a
>> file for sharing, you can only open a file sharable
> 
> It's possible. at least the following example did work on Windows.
> 
> begin
>   filemode:=fmShareDenyNone;
>   assign(f, 'c:\test.txt'); rewrite(f);
>   writeln(f,'test');

Did you try to stop at this point, or even before WriteLn, and check
whether the file is accessible from other applications?

>   writeln('press enter to unlock file');
>   readln;
>   close(f);
> end.
> 
> The newly created c:\test.txt was sharable.
> 
> AFAIK, it's "impossible" for TFileStream using fmCreate flag. fmCreate
> flag causes a file to be re-created without sharing (at Windows).

I can not remember any file attribute "shareable" on Windows. At least
FAT filesystems have no such file attribute.


It might be another issue, though, that new files become *visible* to
other processes only after they have been closed at least once. Same
considerations apply to the file size, that is updated (on disk) only
when a file is closed. I dunno whether it's possible to read added
content, before the file has been closed. That would mean that *all* log
files have to be closed and reopened frequently (after every write), to
give other processes a chance to also read the added text. Kind of a
Flush or Sync procedure would be nice to have, for that purpose...

DoDi





More information about the Lazarus mailing list