smartfilecopy.pas
来自「wbs43open-src.zip 数字隐藏工具」· PAS 代码 · 共 87 行
PAS
87 行
unit SmartFileCopy;
interface
uses classes, sysutils;
function SmartCopyFile(FromFile: String; ToFile: String): Integer;
function SmartCreateDir(Dir: String): Integer;
implementation
function SmartCopyFile(FromFile: String; ToFile: String): Integer;
var
InFileStream: TFileStream;
OutFileStream: TFileStream;
begin
SmartCopyFile:=99;
if not(FileExists(FromFile)) then SmartCopyFile:=1
else begin
try
InFileStream:=TFileStream.Create(FromFile,fmOpenRead);
OutFileStream:=TFileStream.Create(ToFile,fmCreate);
InFileStream.Seek(0,soFromBeginning);
OutFileStream.CopyFrom(InFileStream,InFileStream.Size);
SmartCopyFile:=0;
finally
InFileStream.Free;
OutFileStream.Free;
end;
end;
end;
function SmartCreateDir(Dir: String): Integer;
var
Levels: TStrings;
slash: Integer;
lower: String;
i,j: Integer;
begin
SmartCreateDir:=99;
{$I-}
MkDir(Dir);
{$I+}
if IOResult<>0 then begin
{$I-}
ChDir(Dir);
{$I+}
if IOResult<>0 then begin
// split directory
Levels:=TStringList.Create;
lower:=Dir;
repeat
slash:=Pos('\',lower);
if slash>0 then begin
Levels.Add(Copy(lower,1,slash-1));
lower:=Copy(lower,slash+1,Length(lower)-slash);
end;
until slash=0;
Levels.Add(lower);
if Levels.Count>0 then begin
for i:=0 to Levels.Count-1 do begin
lower:='';
for j:=0 to i do lower:=lower+Levels.Strings[j]+'\';
lower:=Copy(lower,1,Length(Lower)-1);
if i=Levels.Count-1 then begin
{$I-}
MkDir(lower);
{$I+}
SmartCreateDir:=0;
end
else begin
{$I-}
MkDir(lower);
{$I+}
end;
end;
end
else SmartCreateDir:=2;
Levels.Free;
end
else SmartCreateDir:=1;
end
else SmartCreateDir:=0;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?