this slowpoke moves

File Splitter & Merger

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

Beliebte Posts

Translate