Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизРазбор текстового файла. С чего начать ? Найти похожие ветки
← →
b/@. © (2010-03-17 09:38) [0]Добрый день.
Возникла тут одна задача... Вообщем есть у нас одна програмка под DOS.
Судя по тому что она использует egavga.bgi, то написана то ли на Turbo Pascal то ли на Turbo C. Исходников нет. Человека который её писал тоже. И как она толком работает никто не знает.
Програмка при работе генерит текстовый файл с результатами работы в виде некоторого отчёта, в котором текстовое описание в перемешку с нужными нам данными, таблицами с псевдографикой и просто таблицами через табуляцию.
Возникла необходимость считать из этого файла все нужные данные, чтобы не переписывать вручную, а автоматически вкидывать в Excel.
До этого такими задачами не занимался.
С чего начать ?
← →
oldman © (2010-03-17 09:43) [1]С формализации входных данных и постановки задачи.
← →
oxffff © (2010-03-17 09:45) [2]Приведи пример файлика. :)
← →
oldman © (2010-03-17 09:48) [3]Существует программа А, генерящая файл Б.
Надо написать программу В по конвертации файла Б в файл Г.
Не проще написать программу В генерящую файл Г и выкинуть программу А?
← →
b/@. © (2010-03-17 10:04) [4]
> oxffff © (17.03.10 09:45) [2]
> Приведи пример файлика. :)
Вот примерно так он выглядит, табличек и текстовки несколько блоков
************************ И С Х О Д Н Ы Е Д А Н Н Ы Е *************************
СРЕДНЯЯ ДЛИНА КОНСТУРКЦИИ РАВНА 1.52
КОЛИЧЕСТВО УЗЛОВ РАВНО 16
НОМЕР ПРОФИЛЯ ПО КЛАССИФИКАТОРУ 3НП-16
КОЕФФ. НАГРУЗОЧНОЙ ХАРАКТЕРИСТИКИ 0.4897
*********************** Р А С Ч Е Т Н Ы Е Д А Н Н Ы Е *************************
-------------------------------¬
| ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ |
+---------------------T--------+--------T---------T------------T----------¬
| НАИМЕНОВАНИЕ | | Lсум | Lambda | ПРОПУСК | НАГРУЗКА |
| УЗЛА | N | Sсум | tg(L) | | %|
+---------------------+--------+--------+---------+------------+----------+
|1. | | 22.58| 6.300| 50.00| 0.652|
| КОНЦЕВАЯ ТОЧКА 1| 642905| 1.31| 0.750| | 1.304|
+---------------------+--------+--------+---------+------------+----------+
|2. | | 39.30| 6.300| 50.00| 1.645|
| КОНЦЕВАЯ ТОЧКА 2| 642902| 2.76| 0.750| | 3.290|
+---------------------+--------+--------+---------+------------+----------+
> oldman © (17.03.10 09:48) [3]
> Не проще написать программу В генерящую файл Г и выкинуть программу А?
Конечно проще ! Только никто не знает КАК :(
← →
b/@. © (2010-03-17 10:07) [5]Странно, вроде в файле была красивая псевдографика, почему так скопировалось...
← →
oldman © (2010-03-17 10:17) [6]Вполне симпатичные исходные данные. Ожидалась каша цифр и букв.
разбейте свою работу на 4 этапа:
построчное чтение из файла
парсинг строк
обработка данных
запись результата в Ексель
и будет вам щастье.
Если DOS файлы одинаковы (или состоят из одинаковых блоков) работа значительно упрощается.
← →
oxffff © (2010-03-17 10:17) [7]
> b/@. © (17.03.10 10:04) [4]
И в чем сложности?
Начало таблицы -------------------------------¬
Разделить столбцов |.
Область заголовков
+---------------------T
Разделитель строчек(показателей)
+---------------------+
Возьми любой lex+yacc подобные инструменты.
P.S.
Хотя бы я рекомендовал бы быстрее написать вручную.
← →
Mystic © (2010-03-17 10:30) [8]Все вертикальные линии опменять на таб, все остальные символы псевдографики на пробелы?
← →
b/@. © (2010-03-17 10:33) [9]
> oldman © (17.03.10 10:17) [6]
> парсинг строк
Вот сюда пока упёрся. Остальное более-менее представляю как делать.
> oxffff © (17.03.10 10:17) [7]
> И в чем сложности?
Сложность в том что пока не могу представить в голове как делать.
К примеру как определить что число39.30
относиться к значениюLсум
элемента №2.
Наверняка задача популярная и уже делалась сотнями программистов. Возможно есть инструменты упрощающие такую операцию, чтобы не обрабатывать каждую строку своим куском кода.
← →
oxffff © (2010-03-17 10:47) [10]
> Сложность в том что пока не могу представить в голове как
> делать.
> К примеру как определить что число 39.30 относиться к значению
> Lсум элемента №2.
Делаешь конечный автомат.
При анализе заголовка ты анализируешь его структуру. По шагам
Начало заголовка.
+---------------------T Далее ищем конец строки. И останавливаемся на после него.
На первой строке после +---------------------T добавляем столбцы.
На последующих добавляем подстолбцы.
при встречи | добавляем столбцы или подстолбцы в зависимости от режима.
При встрече +---------------------+ завершает анализ заголовка.
Для значений аналогично.
Встретил +---------------------T. Переход на следующую строку.
Флаг устанавливаешь в Columns.
Встретил |. if Columns then addColumn else addSubcolumn To column
Переход до следующего |(берешь потримленное значение между | и |, изменяешь текущий индекс колонки) или конца строки(устанавливаешь флаг в subColumns ).
при встрече +---------------------+ разбор заголовка закончен.
Добавь обработку конца файла, чтобы автомат был конечным на сбойных файлах. :)
← →
Jeer © (2010-03-17 10:50) [11]
> С чего начать ?
купить современное расчетное ПО под ваши задачи и не заниматься ерундой.
← →
b/@. © (2010-03-17 11:01) [12]
> oxffff © (17.03.10 10:47) [10]
> Делаешь конечный автомат.
Пока думаю делать так.
Описать все сущности и блоки из которых состоит файл. Выделить табличные и нетабличные данные в каждом блоке. Далее для каждого значения описать позиции в строчке... пока думаю дальше.
Почитал про Lex/Yacc - крутая штука. Возможно позже разберусь как работать :)
> Jeer © (17.03.10 10:50) [11]
> купить современное расчетное ПО под ваши задачи и не заниматься ерундой.
Человек, вы случайно не из москвы ?
← →
Дмитрий Белькевич (2010-03-17 12:09) [13]>А есть что писать? Большинство из моих знакомых занимаются преобразованием данных из одного типа в другой. Типа вечный саппорт.
(c) Pavia.
← →
Jeer © (2010-03-17 12:12) [14]
> Человек, вы случайно не из москвы ?
Нет, этот человек случайно не из Москвы.
Более того, скажу, что есть freeware расчетный софт.
P.S.
"Смотреть надо не в зад, а в перед" (с)
← →
Плохиш © (2010-03-17 12:25) [15]
> К примеру как определить что число 39.30 относиться к значению
> Lсум элемента №2.
Я бы посоветовал нанять программиста.
← →
Anatoly Podgoretsky © (2010-03-17 14:27) [16]> b/@. (17.03.2010 09:38:00) [0]
С формализации
← →
Anatoly Podgoretsky © (2010-03-17 14:32) [17]> Дмитрий Белькевич (17.03.2010 12:09:13) [13]
Правильно, а то тут дурные предложения поступили - переписать, купить. Убивать за это надо.
← →
b/@. © (2010-03-17 14:45) [18]
> (c) Pavia.
Местный авторитет ?
> Jeer © (17.03.10 12:12) [14]
> Более того, скажу, что есть freeware расчетный софт.
Люди, которые мне задачу ставили тоже не совсем дауны... тем более freeware расчетный софт у нас есть свой, и в нём всё устраивает кроме вот этой небольшой особенности...
> oldman © (17.03.10 09:43) [1]
> С формализации входных данных...
> Anatoly Podgoretsky © (17.03.10 14:27) [16]
> С формализации
А что Вы под этим словом подразумеваете ? Может мы говорим об одном и том же ?
← →
Jeer © (2010-03-17 15:08) [19]
> тем более freeware расчетный софт у нас есть свой, и в нём
> всё устраивает кроме вот этой небольшой особенности...
Видишь ли.. поскольку вы не можете понять, как это "пересчитать/переделать" в том или ином "инструменте" - приходится констатировать, что "дауны" у вас в наличии.
Аналитический/численный расчеты балок с нужным профилем (с известными свойствами) и заданной ( сосредоточенной/распределенной ) нагрузкой - это задачка для студента.
← →
oldman © (2010-03-17 15:09) [20]
> b/@. © (17.03.10 14:45) [18]
http://chernykh.net/content/view/155/
← →
b/@. © (2010-03-17 15:13) [21]
> Jeer © (17.03.10 15:08) [19]
> это задачка для студента.
А вы бы тоже могли такую простую програмку написать ?
← →
Anatoly Podgoretsky © (2010-03-17 15:14) [22]> b/@. (17.03.2010 14:45:18) [18]
Что, куда идет и как дальше жить.
← →
b/@. © (2010-03-17 15:16) [23]
> Anatoly Podgoretsky © (17.03.10 15:14) [22]
> Что, куда идет и как дальше жить.
А это [12] не то же самое ?
← →
И. Павел © (2010-03-17 15:18) [24]Я бы, наверное, смог выделить нужное из выхода этой досовской программки. Если бы задача была поставлена более или менее определенно (бог с ним, с ТЗ) и неплохо оплачивалась.
← →
Jeer © (2010-03-17 15:20) [25]
> > Jeer © (17.03.10 15:08) [19]
> А вы бы тоже могли такую простую програмку написать ?
>
Разумеется :)
Только это не будет для вас free.
P.S.
Хотя и если у меня возникнет личный информационный интерес к вашей задаче - продукт вполне может оказаться для вас почти бесплатным.
← →
Jeer © (2010-03-17 15:23) [26]
> b/@. © (17.03.10 15:13) [21]
О ! Посмотрел Вашу анкету - так Вы велотурист ?
Для велотуристов скидки по максимуму :)
← →
oxffff © (2010-03-17 15:23) [27]
> b/@. © [21]
Я тебе написал уже решение по шагам. Что тебя не устраивает?
← →
b/@. © (2010-03-17 15:24) [28]
> И. Павел © (17.03.10 15:18) [24]
Да собственно, с вашими молитвами и общей помощью я уже половину парсера написал.
> Jeer © (17.03.10 15:20) [25]
> Разумеется :)
> Только это не будет для вас free.
Приезжайте к нам работать. Пол-ставки лаборанта, по-комнаты в общежитии, 6000 рублей.
← →
b/@. © (2010-03-17 15:26) [29]
> oxffff © (17.03.10 15:23) [27]
> Я тебе написал уже решение по шагам. Что тебя не устраивает?
Вам особая благодарность!
И за решение, а особенно за то - что внушили уверенность в своих силах :)
Надеюсь, отнял не слишком много вашего времени...
← →
Anatoly Podgoretsky © (2010-03-17 15:28) [30]> b/@. (17.03.2010 15:13:21) [21]
Студентов особо к кормушке не подпускают.
← →
Anatoly Podgoretsky © (2010-03-17 15:29) [31]
> А это [12] не то же самое ?
То самое, плюс смотри [10]
← →
Jeer © (2010-03-17 15:35) [32]
> b/@. © (17.03.10 15:24) [28]
> Приезжайте к нам работать. Пол-ставки лаборанта, по-комнаты
> в общежитии, 6000 рублей.
Лучше учитесь, пока Вам лично, предоставляется такая возможность, да еще и со скидками, как велотуристу.
И учитесь не возится в дос-отрыжках, а в постановках задач.
← →
b/@. © (2010-03-17 15:49) [33]
> Anatoly Podgoretsky © (17.03.10 15:28) [30]
> Студентов особо к кормушке не подпускают.
Студенты к нам особо не стремятся.
> Jeer © (17.03.10 15:35) [32]
Понял, работать к нам не приедите.
Вот так всегда...
Как оказать реальную помощь - так пара людей, но как жить учить - так человеки набежали...
← →
И. Павел © (2010-03-17 15:52) [34]
> Пол-ставки лаборанта, по-комнаты в общежитии, 6000 рублей.
> Исходников нет. Человека который её писал тоже.
Я понимаю этого человека. Взря exe-шник оставил.
← →
Jeer © (2010-03-17 16:00) [35]
> но как жить учить - так человеки набежали...
дык, если сами не можете "жить" - найдем вам "помошников" и легко.
← →
М. Береговой (2010-03-17 17:44) [36]Просто интересно, откуда программка данные берет знаете?
← →
Jeer © (2010-03-17 22:21) [37]
> М. Береговой (17.03.10 17:44) [36]
>
> Просто интересно, откуда программка данные берет знаете?
>
Все просто - мартышкиными пальцами набирают вслепую цифирь, потом что-то и как-то считается дос-программкой, потом "строители" пользуют вторичную цифирь.
Все довольны - спроса нет и не с кого.
Вуаля !
← →
b/@. © (2010-03-18 10:48) [38]
> М. Береговой (17.03.10 17:44) [36]
> Просто интересно, откуда программка данные берет знаете?
В общих чертах знаю.
Характеристики конструкции вводятся вручную и из текстового файла, который генерит еще одна програмка, а основные данные - со стенда.
> Jeer © (17.03.10 22:21) [37]
Я уже предлагал приехать к нам, поработать пару месяцев и показать КАК НАДО :)
А ковбоев клавиатуры у нас и своих хватает...
← →
Дмитрий Белькевич (2010-03-18 11:32) [39]
> Я уже предлагал приехать к нам, поработать пару месяцев
> и показать КАК НАДО :)
Безвозмездно, я так понимаю?
← →
b/@. © (2010-03-18 12:52) [40]
> Дмитрий Белькевич (18.03.10 11:32) [39]
> Безвозмездно, я так понимаю?
11 постов выше вашего. Насколько это безвозмездно решать вам :)
← →
Jeer © (2010-03-18 20:29) [41]
> b/@. © (18.03.10 10:48) [38]
> Я уже предлагал приехать к нам, поработать пару месяцев
> и показать КАК НАДО :)
Такой курс обучения обойдется вам недешево, а все, что лично Вы можете обещать - это свою пол-ставку лаборанта.
Тут вопрос-то в другом, даже предложи я абсолютно бесплатно сделать для вас софт (практически бесплатно я уже предложил), Вы бы нашли повод для отказа.
Почему ?
Да потому, что тогда Ваш "умный" программный парсинг отрыжки чужой программы был бы не нужен, равно как и Вы стали бы не нужны на этой затее, а значит потеряли бы свои пяток сотен деревянных.
Вот такой вот резюме, однако.
← →
MsGuns © (2010-03-18 21:33) [42]Я бы делал просто:
высекал бы нафиг все, кроме строк, начинающихся на верт.линию (таблица собсна), резельтат просто выкидывал в текстовый файл, затем - в эксель.
Посмотреть, что получится (система явно должна проявиться), написать макрос в экселе.
Потом всю эту ..тень провернуть через OLE-Automation и затолкать в делфи
← →
vuk © (2010-03-19 00:23) [43]to MsGuns © (18.03.10 21:33) [42]
> Я бы делал просто:
Фигасе просто. :) Такого типа файлы у меня парсятся vb-скриптами тупо из текста. Скриптами только потому, что форматов разных много. Особо сложного там ничего нет.
← →
MsGuns © (2010-03-19 00:28) [44]>vuk © (19.03.10 00:23) [43]
>Фигасе просто. :) Такого типа файлы у меня парсятся vb-скриптами тупо >из текста. Скриптами только потому, что форматов разных много.
Оно, конешна, и корову, подковать можно, но только зачем руками,(скриптами, что еще хужее) если ёксель может всосать текст достаточно грамотно, причем с разбивкой по полям (колонкам)
← →
vuk © (2010-03-19 00:42) [45]to MsGuns © (19.03.10 00:28) [44]:
> скриптами, что еще хужее
И чем же скрипты хуже? :)
← →
b/@. © (2010-03-19 14:37) [46]Удалено модератором
← →
b/@. © (2010-03-19 14:40) [47]Удалено модератором
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.065 c