Как склеить 541 файл последовательно в один

Как склеить файлы последовательно в один.
Один в конец другого и т.д.
Всего 541 файл каждый по 5 мб.
Чтобы память не вылетала.
  • Вопрос задан
  • 2589 просмотров
Решения вопроса 1
@maxxiixx Автор вопроса
var
i:integer;
my_stream:TMemoryStream;
my_filestrem:TFileStream;
//.........................................

  my_filestrem:= TFileStream.Create(ExtractFilePath(Application.ExeName)+Edit3.Text+'\file.mp4', fmCreate);

  for i := 0 to Memo2.Lines.Count - 1 do
  begin

    my_stream:=TMemoryStream.Create;
    try
      IdHTTP1.Get(Edit5.Text+Memo2.Lines.Strings[i], my_stream);
      my_stream.Position := 0;
      my_filestrem.CopyFrom(my_stream,my_stream.Size);
      //my_stream.SaveToFile(ExtractFilePath(Application.ExeName)+Edit3.Text+'\'+Memo2.Lines.Strings[i]);
    except
    end;
    my_stream.Free;

    Application.ProcessMessages;
  end;
  my_filestrem.Free;
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
mmmaaak
@mmmaaak
c94279bc5b474a35b9627211160504b3.jpg
Ответ написан
Комментировать
@zedxxx
Используйте TFileStream:
var
    out: TFileStream;
    in: TMemoryStream;
    i: Integer;
begin
    in := TMemoryStream.Create;
    out := TFileStream.Create(...);    
    try
        for i := 0 to files_count - 1 do begin            
            in.Clear;
            in.LoadFromFile(....);            
            out.WriteBuffer(in.Memory^, in.Size);
        end;
    finally
        in.Free;
        out.Free;
    end;
end;
Ответ написан
Комментировать
@m-haritonov
Читать по небольшой порции данных из каждого файла и записывать её в конец нового файла.
Ответ написан
Комментировать
cat * >> new_file

Это разве не решение или, как говорит автор, скушает память?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы