|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2009, 16:03 | #1 |
Регистрация: 13.08.2009
Сообщений: 4
|
Прикладная программа
Возникли проблемы при решении одной задачи по автоматизации трудоемкого процесса. Столкнулся с необходиомостью редактирования большого количества однотипных файлов следующего содержания:
Привести файлы нужно к следующему виду: Под рукой был Microsoft Visual C++ 6.0 Builder. С моими скудными познаниями в программировании удалось кое-что реализовать, а именно изменение полей NAME и MMI на необходимые значения "Участок n", но лишь в указанном файле, а не во всех файлах папки как нужно, и лишь с ручным вводом первого MMI, вместо автоматического из названия файла. Код:
Последний раз редактировалось SteeLeT; 13.08.2009 в 16:28. |
14.08.2009, 15:02 | #2 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
Можете сделать собственный парсер файлов такого типа. Это будет легко, потому что у всех файлов одинаковая структура. А можете заюзать регулярные выражения. |
|
16.08.2009, 19:30 | #3 |
Регистрация: 13.08.2009
Сообщений: 4
|
Не так часто приходилось программировать, поэтому каких-то предпочтений в выборе среды нет.
Да, наверно, если бы я был знал о парсерах не понаслышке, это было бы легко |
16.08.2009, 21:36 | #4 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Насчет обработки всех файлов в директории посмотрите вот в этой темке:
http://programmersforum.ru/showthread.php?t=60071 там ищутся все файлы с расширением ".txt". Вам, соответственно, нужны файлы ".omp". Думаю, разберетесь. А вот суть преобразования я как-то не очень понял. Было: NAME '1Гран-Огуд1' Стало: NAME 'Участок 1' Тут, вроде, все ясно. Вытаскиваем число из названия (1) и добавляем вперед "Участок". Было: MMI '1Гран-Огуд1' Стало: MMI 'ВЛ Г-Огуднев' Вначале "ВЛ", потом пробел. Далее: Цитата:
И, наконец, Цитата:
Это тоже из названия? (641_Гранит_Гранит-Огуднево.omp). И все это добро обрезается до 12 символов. Так? Теперь рассмотрим следующую запись: Было: Код:
Код:
Или это такая опечатка?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||
16.08.2009, 21:48 | #5 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Можно сделать синтаксический анализатор для этого всего, грамматику я уже придумал=) Но это будет как минимум на 40 страниц кода.
|
16.08.2009, 22:53 | #6 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Ну вот, вроде, работает как надо. Но только для одного файла.
Всю работу делает функция fun, которая принимает ссылку на файловый поток и имя файла. Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
17.08.2009, 00:55 | #7 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
А вот полная программа на сях.
Меняет файлы с расширением ".omp" в своем каталоге. Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
21.08.2009, 22:29 | #8 | ||
Регистрация: 13.08.2009
Сообщений: 4
|
Первое слово в названии - измерительная подстанция, дальше два слова через дефис - название линии. Может быть, например: ХХХ_Огуднево_Гранит-Огуднево.omp, тогда первый MMI: ВЛ О-Гранит
Цитата:
Цитата:
У меня не выходит собрать ваш код. Просит dirent.h (если я правильно понял как раз эта библиотека позволяет работать с директорией). Пытался скачать с нета, он стал просить еще какие-то библиотеки и указывал на кучу синтаксических ошибок. |
||
22.08.2009, 00:07 | #9 | |||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
По идее, внутри него подключается дополнительно только io.h. Я пользуюсь средой Dev-C++ (http://wxdsgn.sourceforge.net/). Там она входит в комплект. Цитата:
Код:
Код:
Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|||
23.08.2009, 13:37 | #10 |
Регистрация: 13.08.2009
Сообщений: 4
|
Скачал Dev-C++. Ну вот вроде заработало. Только в конце дописывает лишние NAME и MMI. И с поправкой все равно и в первом и во втором случае Г-Огуднев пишет.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
экзаменационная задачя Беларуского Государственного Университета - Прикладная математика и информатика | breate | Общие вопросы C/C++ | 2 | 29.01.2009 02:07 |
Программа | Fartyna3000 | Операционные системы общие вопросы | 4 | 06.12.2008 23:39 |
прикладная информатика в экономике | Кентавренок | Общие вопросы по программированию, компьютерный форум | 9 | 22.05.2008 11:51 |
прикладная программа по анализу оборотных активов | plexter | Помощь студентам | 1 | 19.04.2007 10:57 |