Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2024, 10:29   #1
murad59
Новичок
Джуниор
 
Регистрация: 26.12.2024
Сообщений: 1
По умолчанию copy filres to one

Здравствуйте!
Подскажите, пожалуйста, как в Делфи сделать аналог дос команды
copy file1 n+ file2 + file3 (+ ...) file_res
Другими словами, объединить несколько файлов в один копированием.
Спасибо!
murad59 вне форума Ответить с цитированием
Старый 26.12.2024, 11:42   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

1) пишем процедуру копирования файла из папки в папку:
Copy(File_Name,Dir_Out, Dir_Input)
3) формируем список файлов в какой-то массив Name[i]
3) в цикле перебираем имена файлов для копирования:
Код:
for i:=1 to N do
begin
   Copy(Name[i],исходная папка, конечная папка);
end;
------------
ну, либо как-то действительно несколько файлов объединять в один большой файл, копировать и обратно разъединять в конечной папке.
-------------
архивировать, копировать, разархивировать?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 26.12.2024 в 11:48.
NetSpace вне форума Ответить с цитированием
Старый 05.01.2025, 15:04   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,855
По умолчанию

Вариант реализации на TFileStream:

Код:
uses
  System.Classes, System.SysUtils;

procedure MergeFiles(const SourceFiles: array of string; const DestinationFile: string);
var
  DestStream: TFileStream;
  SrcStream: TFileStream;
  Buffer: array[0..4095] of Byte; // Буфер для чтения
  BytesRead: Integer;
  FileName: string;
begin
  // Создаем поток для файла назначения
  DestStream := TFileStream.Create(DestinationFile, fmCreate);
  try
    for FileName in SourceFiles do
    begin
      // Открываем каждый исходный файл для чтения
      SrcStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
      try
        // Копируем содержимое исходного файла в файл назначения
        repeat
          BytesRead := SrcStream.Read(Buffer, SizeOf(Buffer));
          if BytesRead > 0 then
            DestStream.Write(Buffer, BytesRead);
        until BytesRead = 0;
      finally
        SrcStream.Free;
      end;
    end;
  finally
    DestStream.Free;
  end;
end;

procedure TestMergeFiles;
begin
  // Объединяем файлы file1.txt, file2.txt, и file3.txt в result.txt
  MergeFiles(['file1.txt', 'file2.txt', 'file3.txt'], 'result.txt');
end;

begin
  try
    TestMergeFiles;
    Writeln('Файлы успешно объединены!');
  except
    on E: Exception do
      Writeln('Ошибка: ', E.Message);
  end;
end.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Copy Pos Rakim4ik Общие вопросы Delphi 1 20.01.2014 19:46
copy pos Gudzik11 Общие вопросы Delphi 5 22.05.2012 08:57
pos copy s1s1s1 Общие вопросы Delphi 13 22.04.2012 21:41
copy Droniwe Общие вопросы Delphi 6 10.02.2012 00:56
pos и copy zotox Помощь студентам 1 23.10.2008 21:13