Hi Dmitry!
31 May 06 17:19, Dmitry Orlov wrote to Slav Matveev:
DO>>> программы для потобных утилит - то еще удовольствие.
SM>> 10-20 строк?
DO> Да. Более того, даже для одной строки регэкспа это не всегда DO> тривиально. Зависит от шаблона. разобрать строку на идентификатор и содержимое большого ума не надо. даже без всяких шаблонов. Если хочется что-то более монументальное наворотить - lex в руки. но не в твои. ты, по всей видимости, ни lex/flex, ни yacc/bison не разумеешь. но это в контексте данной задачи неважно.
SM>> Обычно кроме регулярного выражения больше ничего не требует SM>> пристального внимаения, но когда регулярное выражение вида SM>> (\S+)\s+(\S+) и на него времени много не уходит.
DO> Регулярным выражением строку в hex не перекодируешь. регулярным выражением строку разберешь на "атомы", с которыми дальше можешь делать что угодно. В приведенном примере, который ты не смог правильно использовать, первый "атом" в выходной текст попадает как идентификатор, а второй "атом" - как массив unsigned char.
SM>> Ты всегда хвалился что круто пишешь на С? Врал?
DO> Про круто я нигде не говорил, а так да, пишу. Hо никаких argc, FILE, DO> fopen и т. п. у меня нет и я не помню как это делается и чем.
мда. "и эти люди запрещают мне ковыряться в носу". а что такое STDIN/STDOUT ты знаешь?
SM>> В чем принципиальная разница С для PC и C для pic-16xxx, SM>> например?
DO> В том, что на PC - это в моем случае означает "под windows", а для pic DO> - под конкретное железо устройства, где он стоит. мимо тазика, уважаемый оппонент. Указаная программка была скомпилирована хотя и на PC, но совсем не под windows. что тебе ее не помешало скомпилировать где-то еще. Алгоритмы платформонезависимы. что перекодировка, что сортировка, что разложение в ряд тейлора. поэтому имея представление о, скажем, сортировке методом пузырка, ты сможешь реализовать этот метод что под windows, что под msdos, что под super-puper-mega-pic. А если ты алгоритмы не знаешь, нефиг даже близко подходить к компиляторам.
SM>> ты говорил что эта утилита сама по себе чуть-ли не отдельный SM>> серьезный проект или что-то в этом духе.
DO> Hет, я говорил, что за 10 минут это не пишется, не более того. конвертор пишется. пример был ниже.
DO> Проверил. Она выводит текст вида DO> unsigned char []={...}; DO> на каждую строку исходного текста, что совершенно бесполезно, так как DO> потом определить что это такое не представляется возможным. Как ты DO> говоришь, слив засчитан. Ты не справился с задачей, которую грозился DO> за 10 минут решить. слив засчитать можно только тебе, потому что чукча не читатель. я хотя и корявым, но все-таки вполне понимаемым русским языком написал что входящий файл формата: идентификатор содержимое_строки. А на выходе будет unsigned char идентификатор[]={ строка в hex };
что, собственно, с поправкой на некорректный исходный материал ты и получил.
Задача стояла о конверторе из текста в кодировке хост-системы в hex-представление целевой системы, что бы компилятор не ругался на кривые символы в строках. таблицы нет, потому что я не знаю кодировку целевой системы.
SM>> слив защитан. DO> Свой не забудь посчитать. до моего еще как до Луны в позиции а-ля креветка. :)
SM>> ибо тогда вообще не понятно чего говорить о перекодировании, SM>> если можно сразу вбить нужную и всего-то делов.
DO> Того, что это не удобно. Привязка к конкретному редактору. Это раз. А ты меняешь редакторы как перчатки? DO> Два, бывает не единственный канал вывода информации, могут быть и DO> другие каналы ввода или вывода и тогда существенно удобней DO> придерживаться какой-то общепринятой кодировки. какой из стандартов на кирилицу будем считать "общепринятым"?
SM>> Критичны не десятитысячные процента, а время idle time SM>> которое остается после всех манипуляций.
DO> В рамках десятитысячной процента - тем более не критичен. Как говорил один литературно-фольклорный персонаж: 5 старушек - уже рубль.
DO>>> сообщений на разных языках, то и для таблицы перекодировки 128 DO>>> байт (а то и меньше) найдется.
SM>> Для многих языков перекодировки не нужны, а один язык что SM>> с
DO> Как раз нужны.
Для языков? как ты будешь перекодировать "на лету" "превед медвед!" в "oh, shit!"?
SM>> перекодировкой, что сразу в нужном виде, места занимает SM>> одинаково.
DO> Одинаково. Hо это не гибко и не удобно, гибче и удобней перекодировать DO> рантайм, если ресурсы позволяют, о чем было с самого начала и DO> сказано. чем оно гибче и удобнее, кроме экономии памяти под строки, которые будут только в одной кодировке?
SM>> И может так получится что строк для вывода по объему может SM>> оказаться как бы и не меньше, чем размер таблицы SM>> перекодировки.
DO> Может. Hо если ресурсов хватает, кого это волнует, особенно если при DO> таком объеме вывода поставили LCD, а не несколько LED' ов с надписями.
для нескольких LEDов во-первых придется либо больше ножек процессора использовать, либо дополнительный регистр ставить, во-вторых деньги, ЖКИ 1х16 в наших краях вроде как дешевле, нежели 16 алфавитно-цифровых LED'ов, и, наконец, прикинь сколько текста выводит на экран средний автомобильный маршрутный компьютер? в 128 байт уложится?
Slav.