Задать вопрос

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

Как склеить файлы последовательно в один.
Один в конец другого и т.д.
Всего 541 файл каждый по 5 мб.
Чтобы память не вылетала.
  • Вопрос задан
  • 2590 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    Pascal с нуля
    1 неделя
    Далее
Решения вопроса 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

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 ₽
ITK academy Нижний Новгород
от 75 000 до 125 000 ₽