Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 постов выше вашего. Насколько это безвозмездно решать вам :)



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.066 c
2-1269516298
Delphist2
2010-03-25 14:24
2010.08.27
как узнать адрес процедуры?


15-1264333660
Новичок
2010-01-24 14:47
2010.08.27
Электронный словарь в Delphi


11-1221028023
GradeMax
2008-09-10 10:27
2010.08.27
Как при помощи KOL работать с почтовым ящиком?


15-1272270245
Дмитрий С
2010-04-26 12:24
2010.08.27
Честный многопоточный видеоконвертор?


3-1241681644
abhtr
2009-05-07 11:34
2010.08.27
Нужна срочная помошь!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский