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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 10:23   #1
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию Как БЫСТРО склеить 2 файла?

Как БЫСТРО склеить 2 файла? Есть код:
Код:
procedure TForm12.Button2Click(Sender: TObject);
var
f,f2:file;
buf:string;
done:integer;
begin
  AssignFile(f,'C:\1.mp3');{Первый файл}
  AssignFile(f2,'C:\3.mp3'); {Исходный, склеинный первый и второй}
  Reset(f,1);
  Rewrite(f2,1);
    while not eof(f) do
    begin
    BlockRead(f,buf,sizeof(buf),done);
    BlockWrite(f2,buf,done);
    Application.ProcessMessages;
    end;
  CloseFile(f);
AssignFile(f,'C:\2.mp3');{Второй файл}
Reset(f,1);
done:=FileSize(f);
BlockWrite(f2,done,4);
    while not eof(f) do
    begin
    BlockRead(f,buf,sizeof(buf),done);
    BlockWrite(f2,buf,done);
    Application.ProcessMessages;
    end;
CloseFile(f);
CloseFile(f2);
end;
Но он клеит весьма долго =\
KoBRaAndrey вне форума Ответить с цитированием
Старый 31.05.2010, 10:47   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Reset(f,1);
Rewrite(f2,1);
Ты переписываешь по одному байту, а это не есть гуд. Диск по одному байту не читает . Лучше по 512, потому как чем ты будешь по одному байту 512 раз читать, уже лучше один раз.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2010, 15:34   #3
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

поставил 512 вместо 1, и 2 файла по 4 мб, превратились в 387мб, эээ?
KoBRaAndrey вне форума Ответить с цитированием
Старый 31.05.2010, 16:09   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от KoBRaAndrey Посмотреть сообщение
поставил 512 вместо 1, и 2 файла по 4 мб, превратились в 387мб, эээ?
Э-э-э, надо контролировать число записей по 512, а не по 1-му байту. Меняйте логику работы.

ЗЫ. И еще немного удивило:
Код:
buf:string;
И это при файлах 'C:\1.mp3'
Если это не текстовый, то не знаю, не факт что это сработает.

http://www.delphibasics.ru/BlockRead.php вот пример работы, тоже для одного байта, но для любого файла.

ЗЫ.ЗЫ. Насколько я знаю мп3 имеют заголовки, поэтому, ИМХО, если просто один мп3 сложить со вторым мп3, то полноценный файл из этого не получится.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2010, 17:46   #5
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

Все)) Сделал через файл стрим.
KoBRaAndrey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ 2010. Как склеить .cpp и .h? TwiX Свободное общение 8 22.03.2010 20:55
vbs склеить код kaviga Помощь студентам 0 18.12.2009 21:23
как быстро понять структуры в С++ серг Помощь студентам 0 07.12.2009 21:27
Как склеить документы? drooon Microsoft Office Word 1 04.01.2009 02:28