mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
FIX: Some fixes for bug [2954358] error with write permissions
This commit is contained in:
parent
a6a8d08f57
commit
c2d8744b4b
2 changed files with 38 additions and 14 deletions
|
|
@ -132,32 +132,54 @@ end;
|
|||
|
||||
procedure TfrmLinker.btnOKClick(Sender: TObject);
|
||||
var
|
||||
c:integer;
|
||||
fTarget,fSource:TFileStreamEx;
|
||||
|
||||
c: Integer;
|
||||
fTarget: TFileStreamEx = nil;
|
||||
fSource: TFileStreamEx = nil;
|
||||
begin
|
||||
if mbForceDirectory(ExtractFileDir(edSave.Text)) then
|
||||
begin
|
||||
try
|
||||
fTarget:=TFileStreamEx.Create(edSave.Text,fmCreate);
|
||||
try
|
||||
prbrWork.Max:=lstFile.Items.Count;
|
||||
prbrWork.Position:=0;
|
||||
for c:=0 to lstFile.Items.Count-1 do
|
||||
begin
|
||||
try
|
||||
fSource:=TFileStreamEx.Create(sDirectory+PathDelim
|
||||
+lstFile.Items[c],fmOpenRead);
|
||||
try
|
||||
fTarget.CopyFrom(fSource,fSource.Size);
|
||||
prbrWork.Position:=prbrWork.Position+1;
|
||||
finally
|
||||
FreeAndNil(fSource);
|
||||
FreeThenNil(fSource);
|
||||
end;
|
||||
except
|
||||
on E: EFOpenError do
|
||||
begin
|
||||
MessageDlg(Caption, rsMsgErrEOpen + ': ' + E.Message, mtError, [mbOK], 0);
|
||||
Exit;
|
||||
end;
|
||||
on E: EReadError do
|
||||
begin
|
||||
MessageDlg(Caption, rsMsgErrERead + ': ' + E.Message, mtError, [mbOK], 0);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
ShowMessage(rsLinkMsgOK);
|
||||
finally
|
||||
FreeAndNil(fTarget);
|
||||
FreeThenNil(fTarget);
|
||||
prbrWork.Position:=0;
|
||||
end;
|
||||
except
|
||||
on E: EFCreateError do
|
||||
begin
|
||||
MessageDlg(Caption, rsMsgErrECreate + ': ' + E.Message, mtError, [mbOK], 0);
|
||||
Exit;
|
||||
end;
|
||||
on E: EWriteError do
|
||||
begin
|
||||
MessageDlg(Caption, rsMsgErrEWrite + ': ' + E.Message, mtError, [mbOK], 0);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ type
|
|||
implementation
|
||||
|
||||
uses
|
||||
uLng, uClassesEx, uOSUtils;
|
||||
LCLProc, uLng, uClassesEx, uOSUtils;
|
||||
|
||||
function ShowSplitterFileForm(const sFile: TStringList; const sTargetDir: String): Boolean;
|
||||
begin
|
||||
|
|
@ -106,9 +106,11 @@ end;
|
|||
|
||||
|
||||
procedure TfrmSplitter.btnOKClick(Sender: TObject);
|
||||
var iFileSize:int64;
|
||||
i,num:integer;
|
||||
fSource,fDest:TStream;
|
||||
var
|
||||
iFileSize:int64;
|
||||
i,num:integer;
|
||||
fSource: TFileStreamEx = nil;
|
||||
fDest: TFileStreamEx = nil;
|
||||
begin
|
||||
memWatch.Clear;
|
||||
prgbrDoIt.Position:=0;
|
||||
|
|
@ -187,7 +189,7 @@ begin
|
|||
IntToStr(iFileSize)+'b');
|
||||
prgbrDoIt.Position:=prgbrDoIt.Position+1;
|
||||
finally
|
||||
fDest.Free;
|
||||
FreeThenNil(fDest);
|
||||
end;
|
||||
inc(i);
|
||||
except
|
||||
|
|
@ -217,7 +219,7 @@ begin
|
|||
IntToStr(fSource.Size-(iFileSize*i))+'b');
|
||||
prgbrDoIt.Position:=prgbrDoIt.Position+1;
|
||||
finally
|
||||
fDest.Free;
|
||||
FreeThenNil(fDest);
|
||||
end;
|
||||
except
|
||||
on E: EFCreateError do
|
||||
|
|
@ -232,7 +234,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
finally
|
||||
fSource.Free;
|
||||
FreeThenNil(fSource);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue