uses ComCtrls
//
function SplitFile(FileName : TFileName; SizeofFiles : Integer; ProgressBar : TProgressBar) : Boolean;
var
i : Word;
fs, sStream: TFileStream;
SplitFileName: String;
begin
ProgressBar.Position := 0;
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
for i := 1 to Trunc(fs.Size / SizeofFiles) + 1 do
begin
SplitFileName := ChangeFileExt(FileName, '.'+ FormatFloat('000', i));
sStream := TFileStream.Create(SplitFileName, fmCreate or fmShareExclusive);
try
if fs.Size - fs.Position < SizeofFiles then
SizeofFiles := fs.Size - fs.Position;
sStream.CopyFrom(fs, SizeofFiles);
ProgressBar.Position := Round((fs.Position / fs.Size) * 100);
finally
sStream.Free;
end;
end;
finally
fs.Free;
end;
end;
function MergeFiles(FileName, CombinedFileName : TFileName) : Boolean;
var
i: integer;
fs, sStream: TFileStream;
filenameOrg: String;
begin
i := 1;
fs := TFileStream.Create(CombinedFileName, fmCreate or fmShareExclusive);
try
while FileExists(FileName) do
begin
sStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
fs.CopyFrom(sStream, 0);
finally
sStream.Free;
end;
Inc(i);
FileName := ChangeFileExt(FileName, '.'+ FormatFloat('000', i));
end;
finally
fs.Free;
end;
end;
Datei Splitten :
procedure TForm1.Button1Click(Sender: TObject);
begin
SplitFile('C:/temp.exe', // HIER DIE DATEI ANGEBEN
100000, // HIER DIE SPLIT GRÖSSE ANGEBEN IN BYTE, 100000 SIND 100 Kb
ProgressBar1);
end;
Datei Zusammenfügen :
procedure TForm1.Button2Click(Sender: TObject);
begin
MergeFiles('C:/temp.001', // HIER DIE ERSTE DATEI ANGEBEN
'C:/temp.exe'); // HIER DIE ZUSAMMENGEFÜGTE DATEI ANGEBEN
end;
Keine Kommentare:
Kommentar veröffentlichen