[QUOTE=ZeroQ;86429]имена вида n.txt, где n порядковый номер файла
всё содержимое файлов есть в начальном файле(так же как и их количество и размер)[/QUOTE]
Приведена не вся программа, а только процедура
[code]
procedure UnpackFiles(FileName: string);
var
f1, f2: File;
N, i, j: Integer;
temp: ^string;
new_file_name: string;
begin
f1 := assign(FileName);
Reset(f1, 1); // длина блока = 1 байт
BlockRead(f1, N, 4); // читаем 4 байта (Little Endian)
for i:=1 to N do
begin
// открываем файл i.txt
str(i, new_file_name);
new_file_name := new_file_name + '.txt';
f2 := assign(new_file_name);
Rewrite(f2, 1);
// читаем следующие 4 байта, чтобы узнать длину
BlockRead(f1, j, 4);
// создаем временный буфер
temp := GetMem(j);
// копируем содержимое в этот буфер
BlockRead(f1, temp, j);
// записываем в файл
BlockWrite(f2, temp, j);
// освобождаем объекты
Dispose(temp);
close(f2);
// следующая итерация цикла
end;
end;
[/code]
[B]WARNING:[/B] программа работает с двоичными файлами. Будет большой ошибкой передать ей текстовый файл с циферками и буковками:lol: Создать заготовку можно обратной функцией (упаковкой сталобыть), или создав её в HEX-редакторе.