lcl: don't restrict reading from files which are open for read by another applications (use fmShareDenyWrite or fmShareDenyNone depends on situation)

git-svn-id: trunk@19707 -
This commit is contained in:
paul 2009-04-30 14:04:10 +00:00
parent c4221ad3ac
commit 2e73997680
5 changed files with 18 additions and 19 deletions

View File

@ -1402,29 +1402,28 @@ end;
function CopyFile(const SrcFilename, DestFilename: string PreserveTime:
boolean): boolean;
------------------------------------------------------------------------------}
function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean
): boolean;
function CopyFile(const SrcFilename, DestFilename: String; PreserveTime: Boolean): Boolean;
var
SrcFS: TFileStream;
DestFS: TFileStream;
begin
try
SrcFS:=TFileStream.Create(UTF8ToSys(SrcFilename),fmOpenRead);
SrcFS:=TFileStream.Create(UTF8ToSys(SrcFilename), fmOpenRead or fmShareDenyWrite);
try
DestFS:=TFileStream.Create(UTF8ToSys(DestFilename),fmCreate);
DestFS := TFileStream.Create(UTF8ToSys(DestFilename), fmCreate);
try
DestFS.CopyFrom(SrcFS,SrcFS.Size);
DestFS.CopyFrom(SrcFS, SrcFS.Size);
finally
DestFS.Free;
end;
if PreserveTime then
FileSetDateUTF8(DestFilename, FileGetDate(SrcFS.Handle));
FileSetDateUTF8(DestFilename, FileGetDate(SrcFS.Handle));
finally
SrcFS.Free;
end;
Result:=true;
Result := True;
except
Result:=false;
Result := False;
end;
end;
@ -1866,22 +1865,22 @@ end;
{------------------------------------------------------------------------------
function ReadFileToString(const Filename: string): string;
------------------------------------------------------------------------------}
function ReadFileToString(const Filename: string): string;
function ReadFileToString(const Filename: String): String;
var
fs: TFileStream;
begin
Result:='';
Result := '';
try
fs:=TFileStream.Create(UTF8ToSys(Filename),fmOpenRead);
fs := TFileStream.Create(UTF8ToSys(Filename), fmOpenRead or fmShareDenyWrite);
try
Setlength(Result,fs.Size);
if Result<>'' then
fs.Read(Result[1],length(Result));
Setlength(Result, fs.Size);
if Result <> '' then
fs.Read(Result[1], Length(Result));
finally
fs.Free;
end;
except
Result:='';
Result := '';
end;
end;

View File

@ -233,7 +233,7 @@ procedure TGraphic.LoadFromFile(const Filename: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(UTF8ToSys(Filename), fmOpenRead{ or fmShareDenyWrite});
Stream := TFileStream.Create(UTF8ToSys(Filename), fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(Stream);
finally

View File

@ -494,7 +494,7 @@ begin
Ext := ExtractFileExt(Filename);
System.Delete(Ext, 1, 1); // delete '.'
Stream := TFileStream.Create(UTF8ToSys(Filename), fmOpenRead{ or fmShareDenyWrite});
Stream := TFileStream.Create(UTF8ToSys(Filename), fmOpenRead or fmShareDenyWrite);
try
LoadFromStreamWithFileExt(Stream, ext);
finally

View File

@ -4821,7 +4821,7 @@ procedure TCustomTreeView.LoadFromFile(const FileName: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(UTF8ToSys(FileName), fmOpenRead);
Stream := TFileStream.Create(UTF8ToSys(FileName), fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(Stream);
finally

View File

@ -472,7 +472,7 @@ constructor TPOFile.Create(const AFilename: String; Full:boolean=False);
var
f: TStream;
begin
f := TFileStream.Create(UTF8ToSys(AFilename), fmOpenRead);
f := TFileStream.Create(UTF8ToSys(AFilename), fmOpenRead or fmShareDenyNone);
try
Self.Create(f, Full);
if FHeader=nil then