parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Аллилуя ^file::load[binary;file] > replace > save - на чистом парсере

crypto 20.04.2010 22:48

Намедне обсуждалась замена файла в режиме binary, в text структура файла билась и размер отличался от исходного. В моем случае файл текстовый но весьма капризный (.mht) там и переносы и base64 все в одном.

Поскольку после открытия файла поле $sourcefile.text заменить мы не можем (а зря). А также, ^file::create[text;имя;текст] работает только в режиме text, то тут то и грабли. Связано это еще с логическим конфликтом автоматического преобразования кодировок и прочего. в match'e в частности.

У меня cp-1251 (однобайтаная) поэтому не тестил что будет с другими.

Одного не пойму как мне это сразу не подсказали и почему я сам не попробовал такой простой метод.

Чтобы работало делаем банально так:
#
# Данный код заменит символ A на B и запишет в файл
#

$reptable[table::create{from to
A	B
}]
$file_a[binary;file.txt]
$str[$file_a.text]
$str[^str.replace[rep]]
^str.save[file2.txt]
Проверил все работает, размер файла не меняется.