Hi,

I want to achieve this:

If file with given name already exists then open it for append else create new one and open it for append.

I use something like:

  FileName:='FileName'+formatdatetime('yymmdd',date)+'.log';
  if FileExists(FileName) then F:=FileOpen(FileName, fmOpenWrite+fmShareDenyWrite) else F:=FileCreate(FileName);
  FileSeek(F, 0, 2); //... 0 bytes from the end of the file
  FileWrite(F, Pointer(s)^, length(s));
  FileClose(F);

or:

  if FileExists(FileName) then
    FS := TFileStream.Create(FileName, fmOpenWrite+fmShareDenyWrite)
  else
    FS := TFileStream.Create(FileName, fmCreate+fmShareDenyWrite);
  FS.Seek(0, soEnd);
  FS.Write(s[1], Length(s));
  FS.Free;

Is there way how to achieve this using one-line without checking FileExists ? i.e.: resulting efect like when using on Windows CreateFile(FileName, GENERIC_WRITE, FILE_SHARE_READ, *OPEN_ALWAYS,*...)* CreationDisposition =  OPEN_ALWAYS - Opens a file, always if exists else create new one. If the specified file exists, the function succeeds and the last-error code is set to ERROR_ALREADY_EXISTS (183). If the specified file does not exist and is a valid path to a writable location, the function creates a file and the last-error code is set to zero.*

L.
**

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to