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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
mr_winston
Новичок
Сообщения: 5
Зарегистрирован: 29 Июль 2009, 9:41
Откуда: Великий Новгород
Контактная информация:

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

Сообщение mr_winston »

Дело такое...
кларионом занимаюсь совсем недавно :roll:

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

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

кто поможет новичку!? :?
wInsTon
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

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

Сообщение Admin »

А в файл RTF заглядывал редактором отличным от MS Word?
У него вообще то определенная структура. Очень мутная.
И не все так просто.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
mr_winston
Новичок
Сообщения: 5
Зарегистрирован: 29 Июль 2009, 9:41
Откуда: Великий Новгород
Контактная информация:

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

Сообщение 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)

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

(на гитлера не обращайте внимания..фантазии нехватило иначе назвать))
wInsTon
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

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

Сообщение lsgsoftware »

Полностью согласен с Админом. Да и вообще, причем здесь
кларион.Нужно знать структуру РТФ-файла(описания есть).
А для клаши это просто Stream DOC-файл. Сканируй его и делай
твои замены.Правда, работа муторная.Пример из своего опыта.
Была у меня такая я же задача для большого количества ДБФ-файлов.
Можно было затеять их конвертацию в клашин формат, но это долго и муторно.
Я и объявил в клаше ДБФ как Дос-файл и написал прогу, которая в пакетном режиме
все это зараз и делала.Примерно также делается "кустарная" русификация прог.
Но учти, это работа не из простых и немалый опыт в программировании нужно иметь.
Да сделать это можно и не на клаше, а на любом другом языке
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

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

Сообщение BOB »

Не понял зачем все это.
Открывай файл как ртф и копируй из него в простую переменную например , при этом (по моему) структура остается в стороне .
mr_winston
Новичок
Сообщения: 5
Зарегистрирован: 29 Июль 2009, 9:41
Откуда: Великий Новгород
Контактная информация:

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

Сообщение mr_winston »

не так все просто...нужно прогу сделать именно чтобы работать с ртф файлами...
был бы он один..неыло бы проблем...
а так их сотни..
и каждый переписывать в обычный :?
wInsTon
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

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

Сообщение Олег »

Ну и, какие проблемы?!

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

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

В алгоритме я специально не стал акцентировать внимание на сохранение файла в DOC-формате - это отдельная тема, которая не имеет никакого отношения к обработке RTF-файла. После обработки новый файл можно уже "прогнать" через конвертор (в виде внешней утилиты или используя внешние библиотеки) и получить DOC-файл.
mr_winston
Новичок
Сообщения: 5
Зарегистрирован: 29 Июль 2009, 9:41
Откуда: Великий Новгород
Контактная информация:

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

Сообщение mr_winston »

а на счет .dct
там глобальные переменные и простые переменные!?!???
wInsTon
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

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

Сообщение Олег »

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

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