Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как определить уровень заголовков?

1.2K
12 декабря 2005 года
richel
142 / / 20.01.2005
В указанной таблице нет четкого представления формирования заголовков.
Мне в этой задаче необходимо их распределить по уровням и вытащить в переменные.
Ранее эту задачу я решила, преобразовав таблицу Ворд к более удобоваримову виду, т.е. объединяла ячейки, убрала строки, где присутствует словосочетание «Ст. нагр» и удаляла пустые строки. Короче, работала в Ворде через Билдер. Затем по условиям на пустоты и не пустоты в столбцах вычленяла нужные строки. В коротком вордовском файле все работало быстро. А когда загрузила файл на 40 страниц да еще в шаблоне с рамками, то обработка шла 20 мин. Ворд сильно тормозит, пока удаляет, объединяет и т. д..
Как мне сделать так, чтобы строка
 
Код:
«Электрооборудование, устанавливаемое  заводом-строителем»
записалась в переменную как строка 1-го уровня заголовка.
Строка
 
Код:
«пом.07134»
- как строка 2-го уровня заголовка.
Строка
 
Код:
«Схема  электрическая внешних соединений кабелей системы «Двина».  18280-614-071»
» - как строка 3-го уровня заголовка.
Затем строки, не относящиеся к заголовку (оперативные данные) и снова строка
 
Код:
«Схема соединения электропривода среднего    гребного винта  18280-621-002»
- как строка 3-го уровня заголовка.
Строки, где есть словосочетание
«Ст. нагр» не должны участвовать в этом цикле.
На выходе, я так понимаю, должен быть массив из 3 переменных, каждая из которых соответствует своему уровню заголовков.
От меня уже «дым идет». Помогите, пожалуйста.
:angel:
4.8K
12 декабря 2005 года
Jump
128 / / 09.11.2005
А что ты подразумеваешь под фразой "уровень заголовка"?
Не уловил задачу...
1.2K
13 декабря 2005 года
richel
142 / / 20.01.2005
Цитата:
Originally posted by Jump
А что ты подразумеваешь под фразой "уровень заголовка"?
Не уловил задачу...


Структура враспределения заголовков в данной таблице такова:
1 уровень - «Электрооборудование, устанавливаемое заводом-строителем»
2 уровень - «пом.07134»
3 уровень - «Схема электрическая внешних соединений кабелей системы «Двина». 18280-614-071»
Т.е,

 
Код:
Заголовок 1
Заголовок 2
Заголовок 3

Если перейти на строку «Схема соединения электропривода среднего гребного винта 18280-621-002», то перед нею отсутствуют 2 предыдущих уровня заголовков.
Допустим, есть массив Title[3].
Тогда, обрабатывая первые три строки будет
 
Код:
Title[1] = «Электрооборудование, устанавливаемое  заводом-строителем»
Title[2] = «пом.07134»
Title[3] = «Схема  электрическая внешних соединений кабелей системы «Двина».  18280-614-071»

Дойдя до второго участка, где могут быть заголовки (со строки "Прибор ДВ4-1" до "Ст. нагр. 04020100" все должно быть пропущено, так как это не заголовки), тогда
 
Код:
Title[1] = ""
Title[2] = ""
Title[3] = «Схема соединения электропривода среднего    гребного винта  18280-621-002»

Во такая схема.:P
4.8K
13 декабря 2005 года
Jump
128 / / 09.11.2005
Из того, что я смог сообразить... Тебе нужно все табличные заголовки сверять на предмет совпадения с форматами твоих заголовков (всех уровней). Соответственно, если строка сразу оказывается заголовком первого уровня, то запихиваем его в Титл[0], если такового не оказывается, а оказывается совпадение с форматом заголовка вторго уровня, то Титл[0]="" , Титл[1]=Текст...
Если совпадение только с третьим, то Титл[0]="",Титл[1]="",Титл[2]=Текст. И т.д.
1.2K
13 декабря 2005 года
richel
142 / / 20.01.2005
Цитата:
Originally posted by Jump
Из того, что я смог сообразить... Тебе нужно все табличные заголовки сверять на предмет совпадения с форматами твоих заголовков (всех уровней). Соответственно, если строка сразу оказывается заголовком первого уровня, то запихиваем его в Титл[0], если такового не оказывается, а оказывается совпадение с форматом заголовка вторго уровня, то Титл[0]="" , Титл[1]=Текст...
Если совпадение только с третьим, то Титл[0]="",Титл[1]="",Титл[2]=Текст. И т.д.


Совершенно правильно поняли.

4.8K
13 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by richel
Совершенно правильно поняли.


Ээээ... А в чем тогда вопрос?
В том, как скопировать из ворда в переммую чтоль?

1.2K
13 декабря 2005 года
richel
142 / / 20.01.2005
Цитата:
Originally posted by Jump
Ээээ... А в чем тогда вопрос?
В том, как скопировать из ворда в переммую чтоль?


Именно в этом. Я попыталась обработать всю таблицу. Т.е., нужно распределить текст так:

 
Код:
Заголовок 1
Заголовок 2
Заголовок 3
Текст оперативных данных (там, где заполнены 1, 2 или 4 столбцы)
(Причем, если текст разорван, т.е. распределен на несколько строк, а разделителем является пустая строка, то эту строку нужно склеить)
А строки, где есть "Ст. нагр" вообще проигнорировать

В общем, код я сделала, но что-то он не верно делает, а где ошибка, понять не могу.
4.8K
13 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by richel

В общем, код я сделала, но что-то он не верно делает, а где ошибка, понять не могу.


Что тут скажешь... Кидай код. Поглядим.
Только поясни, что он не верно делает и что ты от него хочешь...

Самый скоростной код будет, пожалуй, если просто полностью скопируешь в некотором формате содержимое всей таблицы сразу к себе в прогу (в какой-нить массивчик), а дальше разгребай этот массивчик, как твоей душе угодно и ворд не трогай - тормоз он... основательный... ненавижу с ним работать... и матерится вечно по чем зря!

1.2K
13 декабря 2005 года
richel
142 / / 20.01.2005
Хорошо, а то сама замучилась. Пишет, что неправильное завершение программы, а сам код отрабатывается. Причем, когда выдается такое сообщение, блокируется вордовский файл и открывается только для чтения. А блокировку не снять. Тем не менее, я накопировала этих файлов (клонировала один). Программа то работает, то нет.
Присоединяю всю программу, поскольку здесь ее не вместить. Билдер 6.0.

Цитата:
Самый скоростной код будет, пожалуй, если просто полностью скопируешь в некотором формате содержимое всей таблицы сразу к себе в прогу (в какой-нить массивчик), а дальше разгребай этот массивчик, как твоей душе угодно и ворд не трогай - тормоз он... основательный... ненавижу с ним работать... и матерится вечно по чем зря!


Никогда так не делала. Хотелось бы посмотреть пример (если это возможно):{
А Ворд действительно тормозит. Excel работает быстро, а Ворд нет. Если бы работать с Вордом, это мне проще. Я Ворд знаю почти досконально. И могу почти все запрограммировать через Билдер. Но производить изменения в огромной таблице оказалось невозможно. Меня сбивает зацикленность на работе в самой таблице.

4.8K
14 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by richel


Компиллится у меня не хочет (я себе RX-ину не ставил), но так как я сделал глупость - попытался это сделать - у меня теперь и ехе-шника нет :D Но, не важно...

Кстати... Я наверно деревня :)

 
Код:
Wapp.OlePropertyGet("Documents");

Я непосредственно в билдере не работал с вордом. Работал только в делфике. Дак там писал просто
 
Код:
Wapp.Documents


Но, не важно :) Пишу, как писал:
Чтоб скопировать содержимое таблицы в переменную (в строчку) нужно написать
 
Код:
TabStr = Wdoc.Tables(TabNum).Range.Text;

TabStr - String.

Формат там, вроде, простейший (ячейки в строчке разделяются символами переноса строки и символами новой ячейки, хочешь константы объяви, а хочешь просто как char)
1.2K
14 декабря 2005 года
richel
142 / / 20.01.2005
Цитата:
Originally posted by Jump
Компиллится у меня не хочет (я себе RX-ину не ставил


RX - это библиотека? Она у меня стоит, но в этой программе я не использую ни одного компонента из нее.
Что касается массива: а как из переменной, куда я скинула таблицу вытаскивать ячейки?
И пока не удалось выяснить, почему у меня неверное завершение программы?:???:

4.8K
14 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by richel
RX - это библиотека? Она у меня стоит, но в этой программе я не использую ни одного компонента из нее.
Что касается массива: а как из переменной, куда я скинула таблицу вытаскивать ячейки?
И пока не удалось выяснить, почему у меня неверное завершение программы?:???:



RX-библиотека. И хоть ты ее не пользовала, прога все-таки ее запрашивает... хз, куда она прописалась.

Ячейки в строке разделены спец-символами (какими? хз. Проверишь - это не сложно). Соответственно, бежишь себе в цикле по этой строчке и, как встречаешь эти символы, значит новая ячейка пошла.

Чтобы узнать началась ли новая строчка в таблице придется еще из ворда вытащить ColCount (число столбцов) данной таблицы. Соответственно, каждая ColCount'овая ячейка (если нумеровать ячейки с 0) будет располагаться в начале новой строчки.

С завершением не выяснил, т.к. прога отсутствует и не компиллится, а на взгляд определить сложновато будет...
Пока не совсем понял, что означает в конце просто Quit()...
Я из ворда бы выходил Wapp.Quit(false) (если без сохранения)
Вру.. Понял.. Это твоя функция.

4.8K
14 декабря 2005 года
Jump
128 / / 09.11.2005
Прикольно ты в конце: FILE *F ... тра-ля-ля... а потом отрываешь док ShellExecute'ом :D
1.2K
14 декабря 2005 года
richel
142 / / 20.01.2005
С массивом все пока ясно. Скоро предоставится возможность решать другую похожую задачку. Там попробую с ним разобраться.
По поводу завершения программы - все сделано правильно. Прерывается она на этом месте
 
Код:
if (Next_naim[1] != "") {  //Заголовок
         Title[x] = Next_naim[1];
         x = x + 1;             //?
         }

только на одной строке таблицы файла (на листе 5), фраза такая
Цитата:
Схема расположения и соединения УСВЗ 18280-614-060


Убираю эту строку из таблицы или даже просто текст из ячейки, создается текстовый файл.
Эта строка - строка заголовка 3-го уровня. Чем она отличается от предыдущего заголовка этого же уровня - не знаю.
Вот если бы нашелся человек, который бы смог откомпелировать программу. Может быть понял бы в чем дело...:}

1.2K
14 декабря 2005 года
richel
142 / / 20.01.2005
Докопалась я до истины. Я же установила сама, что массив заголовков [3]. Именно в этом месте создалась ситуация, что под условие "Заголовок" попали 4 строки. И программа "заткнулась". Дело в том, что код я проверяла тогда, когда еще не исключила строки, имеющие в столбце фразу "Ст. нагр". Вот эта фраза тоже попала под критерий заголовка и стала в массиве четвертой. Я все исправила. И на всякий случай, увеличила массив.
Jump, спасибо за помощь!:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог