此函数可用与文件锁
当a客户端在操作某个事情时,将配置 改成 1,b客户端检查配置为1,放弃操作
支持读写独占,解决读取冲突,a读取时,b无法读取
function Checklock(sfilepath: string;sflag: string): Boolean;
var
f: TFileStream;
ss: string;
i: Integer;
ff: string;
begin
Result := False;
if FileExists(sfilepath) then
begin
try
f := TFileStream.Create(sfilepath,fmOpenReadWrite or fmShareExclusive);
except
f := nil;
Exit;
end;
f.Position := 0;
SetLength(ss,f.size);
f.ReadBuffer(PChar(ss)^,f.Size);
if (ss = '1') and (sflag = '1') then
begin
f.Free;
Exit;
end;
f.Position := 0;
f.WriteBuffer(PChar(sflag)^,Length(sflag));
ShowMessage('x');
f.Free;
Result := True;
end
else
begin
try
f := TFileStream.Create(sfilepath,fmCreate or fmShareExclusive);
except
f := nil;
Exit;
end;
f.WriteBuffer(PChar(sflag)^,Length(sflag));
f.Free;
Result := True;
end;
end;