Esbolov А что там еще упрощать? Зачем? Ты же хочешь упаковщик написать. И ты не ответил на вопросы моего предыдущего поста.
можеш подсказать с началои запаковшика примерно так можно Код (Text): begin Assign(fOut,main.img); ReWrite(fOut); Writeln('Введите число файлов:'); Read(n); for i:=1 to n do begin str(i,s); s:='re.0+s; Assign(fInf,s); ReSet(fInf); seek(fInf, dword_233C); { чита конкретную запись из файла} Read(fInf,byte_243C); sub_2E4(fInf, fOut) Close(fInf); end; Close(fOut); end.
Esbolov Можно. Только вместо sub_2E4 должно быть что-то вроде Pack(fInf, fOut). И, насколько я понимаю, результирующие файлы должны склеиваться (append) в один.
ты хочеш сказать что здесь должен Код (Text): ReWrite(fOut); вот так Код (Text): Append (fOut); да но это помоему для текстовых фаилов ну процедуру можна и так Код (Text): begin Assign(fOut,main.img); Append (fOut); Writeln('Введите число файлов:'); Read(n); for i:=1 to n do begin str(i,s); s:='re.0+s; Assign(fInf,s); ReSet(fInf); seek(fInf, dword_233C); { чита конкретную запись из файла} Read(fInf,byte_243C); Pack(fInf, fOut); Close(fInf); end; Close(fOut); end
Esbolov Не совсем правильно. Нужно упаковывать каждый из составляющих файлов (или не упаковывать, все зависит видимо от эффективности сжатия, небольшие фрагменты упаковывать не эффективно, их проще хранить в неизменном виде). Информацию о фрагментах (начало твоего упакованного файла) тоже нужно сохранить в файле. Это можно сделать, например, записав "пустышку" подходящего размера, и заполнив ее окончательно после упаковки всех фрагментов и определения смещений и размеров необходимой информацией. Главное - упаковщик, общую обвязку сделать несложно.
crypto да но некоторыие фаилы при упаковке смешаются между собои тоесть к примеру в загаловке фаила такои вывод есть размер фаила RE.03 больше всех и кпримеру фаил RE.04 смешается по данному фаилу
Esbolov При "сборке" упакованных (неупакованных) фрагментов нужно будет запоминать общую длину полученного файла (т.е. текущее смещение), чтобы потом запомнить эту информацию в заголовке. Короче, процесс сборки будет "инверсией" процесса разборки.
ну можно и так или можно просто прочесть загаловок main.img и записывать как выходнои фаил другои к примеру main.bin
Esbolov Кроме размеров в заголовке насколько я помню есть еще и смещение. ЗЫ Понимаю тебя с трудом, постарайся все-таки по-русски излагать.
смешение в фаиле остается тоесть как и при распаковке так же и при запаковке фаила смешении одинаковы
Esbolov Повторюсь: ты же собираешься менять фрагменты, значит размеры упакованных файлов наверняка окажутся другими, значит и смещения изменятся. И потом, это все относится к сборке, а тебе нужно упаковщик писать. Стоит уже этим заняться.
с упаковшиком уменя идут затруднееия может подскажеш. а смешшение остается постояным ты наверное думаеш что каждыи блок идет за ним нет там так не происходит
crypto подскажи может знаеш почему считывают и записывают в одну и тоу файл записывают например Код (Text): Seek(fO, dword_2394); Read(fO, Buf[1]); dword_2364 := Buf[1]; Seek(fO, dword_2390); Buf[1]:= dword_2364; Write(fO, Buf[1]);
я так и ничего не понял процедура sub_0 считывает из фаила main.img а зачем тут в процедуре sub_2Е4 считывать там ведь пуста тоесть фаилы только созданны и они пустыие