Страница 1 из 1

=Р сортировка..

Добавлено: 05 Август 2009, 11:14
mr_winston
Дело такое...
кларионом занимаюсь совсем недавно :roll:

поставили задачу - дается файл в .rtf формате
из него нужно убрать ненужные данные и опять сохранить в текстовый файл,например в формат .doc

я сделал window , пару кнопок=Р путь к файлу и путь к исходному файлу..
но почему то не работает сортировка.... код переписывал несколько рас..
один в один он копирует норм
а вот чтоб отсартировать ненужное и сохранить... не получается!!

кто поможет новичку!? :?

Re: =Р сортировка..

Добавлено: 05 Август 2009, 12:02
Admin
А в файл RTF заглядывал редактором отличным от MS Word?
У него вообще то определенная структура. Очень мутная.
И не все так просто.

Re: =Р сортировка..

Добавлено: 05 Август 2009, 12:13
mr_winston
да...
структура мутная)
делал как..-

!if (sub(aht:gitler,2,22) = ('\rtf1\ansi\ansicpg1251'))
!next(ahtyng)
!stop('2')
if instring('\pard\plain',clip(aht:gitler),1,1) and (flag# =0) !(sub(aht:gitler,131,11) = ('\pard\plain'))
ECO:lenin = clip(AHT:gitler)
add(ecosys)
flag#=1
stop('3')
elsif flag#=1

if (sub(aht:gitler,1,10) = ('\qc \intbl')) AND (sub(aht:gitler,13,5) = '\fs16')

stop('5')
next(ahtyng)
next(ahtyng)
if (sub(aht:gitler,1,5) = ('Отказ'))
previous(ahtyng)
previous(ahtyng)
ECO:lenin = clip(AHT:gitler)
add(ecosys)

по такому принципу..

(на гитлера не обращайте внимания..фантазии нехватило иначе назвать))

Re: =Р сортировка..

Добавлено: 05 Август 2009, 12:31
lsgsoftware
Полностью согласен с Админом. Да и вообще, причем здесь
кларион.Нужно знать структуру РТФ-файла(описания есть).
А для клаши это просто Stream DOC-файл. Сканируй его и делай
твои замены.Правда, работа муторная.Пример из своего опыта.
Была у меня такая я же задача для большого количества ДБФ-файлов.
Можно было затеять их конвертацию в клашин формат, но это долго и муторно.
Я и объявил в клаше ДБФ как Дос-файл и написал прогу, которая в пакетном режиме
все это зараз и делала.Примерно также делается "кустарная" русификация прог.
Но учти, это работа не из простых и немалый опыт в программировании нужно иметь.
Да сделать это можно и не на клаше, а на любом другом языке

Re: =Р сортировка..

Добавлено: 05 Август 2009, 18:01
BOB
Не понял зачем все это.
Открывай файл как ртф и копируй из него в простую переменную например , при этом (по моему) структура остается в стороне .

Re: =Р сортировка..

Добавлено: 06 Август 2009, 11:10
mr_winston
не так все просто...нужно прогу сделать именно чтобы работать с ртф файлами...
был бы он один..неыло бы проблем...
а так их сотни..
и каждый переписывать в обычный :?

Re: =Р сортировка..

Добавлено: 09 Август 2009, 19:53
Олег
Ну и, какие проблемы?!

Рисуешь простенькое окно с прогресс-баром, что-бы показать процесс обработки RTF-файлов.
На это окно "кладешь" скрытый RTF-контрол.
Береш список обрабатываемых файлов (ручной или по Directory) и для каждого выполняешь что-то типа:
- загружаем файл в RTF-контрол
- отображаем в окне имя обрабатываемого файла
- ищем нужную последовательность (букв, слов, предложений) и заменем ее, ИЛИ используем сразу метод FindAndReplace
- после обработки сохраняем содержимое RTF-контрола в тот-же или новый файл
- увеличиваем счетчик прогресс-бара

Как видно, не нужно НИЧЕГО выдумывать с форматом файла - пусть этим занимается Виндовая либа RichEdit!
Другое дело, если работать нужно не с самим текстом, а с внедренными обьектами типа картинок или таблиц, или с форматированием этого текста - в этом случае, имхо, лучше использовать специализированные библиотеки.

В алгоритме я специально не стал акцентировать внимание на сохранение файла в DOC-формате - это отдельная тема, которая не имеет никакого отношения к обработке RTF-файла. После обработки новый файл можно уже "прогнать" через конвертор (в виде внешней утилиты или используя внешние библиотеки) и получить DOC-файл.

Re: =Р сортировка..

Добавлено: 10 Август 2009, 9:18
mr_winston
а на счет .dct
там глобальные переменные и простые переменные!?!???

Re: =Р сортировка..

Добавлено: 10 Август 2009, 21:35
Олег
Извини, не понял - а при чем здесь DCT?!
Твоя задача, если я правильно ее понял, решается вообще без файлов Базы Данных - т.е., словарь ненужен!

И какое отношение к словарю имеют глобальные и локальные данные?!
Может ты путаешь назначение словаря? Словарь (DCT-файл) в Кларионовских проектах используется, в основном, для обьявления структуры файлов Базы Данных - в дальнейшем все шаблоны (бровз, форма, отчет) будут использовать эту информацию для доступа к данным из этих файлов.
Дополнительно в словаре можно обьявлять пул глобальных переменных. Но, в большинстве случаев, этого не делают и обьявляют глобальные переменные и структуры (классы, очереди, группы) в стандартном месте - в секции глобальных данных, которая размещается в головном модуле проекта.
Кроме глобальных данных есть еще модульные (данные, которые обьявляются в начале CLW-модуля и которые доступны всем процедурам данного модуля) и локальные (данные, которые обьявляются в процедуре/методе класса и которые доступны только в данной процедуре/методе, включая рутинки и локальные процедуры этой процедуры/метода) данные.