[Lazarus] Cannot save file to NFS mounted path

Leonardo M. Ramé l.rame at griensu.com
Thu Aug 4 19:04:20 CEST 2016


El 04/08/16 a las 12:03, Mattias Gaertner escribió:
> On Thu, 4 Aug 2016 07:59:14 -0300
> Leonardo M. Ramé <l.rame at griensu.com> wrote:
>
>> [...]
>> mounted NFS one.
>>
>> I must add the user has write permissions on the mounted path, in fact
>> before posting this I've tried creating a text file without using
>> TFileStream and it worked without an issue, so I assume the problem is
>> with TFileStream:
>>
>>       // This works:
>>
>>       AssignFile(f, '/mnt/data_vultr/documents/test.txt');
>>       {$I-}
>>       Rewrite(f);
>>       {$I+}
>>       if IOResult =0 then
>>       begin
>>         System.WriteLn(f, 'aaaa');
>>         System.WriteLn(f, 'bbb');
>>       end;
>>       System.Close(f);
>>
>>
>>       // this doesn't work
>>
>>       lFileStream := TFileStream.Create(lFile, fmCreate);
> Try
> lFileStream := TFileStream.Create(lFile, fmCreate or fmShareDenyNone);
>
> NFS often does not support locking.
>
>>       AMemStream.Position := 0;
>>       lFileStream.CopyFrom(AMemStream,AMemStream.Size);

I'll try that, meanwhile it worked using this:

       var lBinaryFile: file;
       ...
       lFile := '/path/to/mounted/nfs/file.bin';
       AssignFile(lBinaryFile, lFile);
       {$I-}
       Rewrite(lBinaryFile);
       {$I+}
       if IOResult = 0 then
       begin
         BlockWrite(lBinaryFile, AMemStream.Memory, AMemStream.Size);
         System.Close(lBinaryFile);
       end;

Regards,
-- 
Leonardo M. Ramé http://leonardorame.blogspot.com


More information about the Lazarus mailing list