| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Выбор компонентов |
| Автор: Dmi3ev 2.4.2009, 22:35 |
| Мне необходимо выбрать компоненты для реализации проекта, сам посмотрел кое-что, но нуждаюсь в совете: 1) компонент, для отображения большого количества информации (текстовой), 500-1000 страниц, можно ли взять RichEdit за основу? просто мне придется реализовывать там свои функции, а не хотелось бы потом все менять, хоть придется по большому счету и копипастить, но все же... тут же возникает вопрос, когда я буду создавать компонент на основе RichEdit: как это делать??? в Бормане не сталкивался с этим... (в дельфи че-то делал) 2) графики решил строить в TChart, потянет ли большой объем??? 3) настройки программы (окон, шрифтов и тд) решил хранить в ини... знаю что можно в реестре, но как не знаю, поэтому решил в ини... 4) еще нужно немного рисовать будет, сколько можно нарисовать с помощью Canvas, просто в OpenGl я недавно только начал что-то делать... поэтому... хз, лучше по старинке... Для начала все... |
| Автор: Anikmar 2.4.2009, 22:43 |
| По поводу 1-го вопроса - пару лет назад здесь на форуме проверяли TMemo и RichEdit на прочность. Как-то там все кисло получалось - обязательно поройтесь, поищите по форуму - может такой объем ричу и не слопать. 2 - не знаю 3 - Советую пока не заморачиваться и делать как удобнее 4 - Смотря что там за графика, однако. |
| Автор: Dmi3ev 2.4.2009, 22:46 | ||||
графика такая, что с помощью канваса рисовать можно, но где-то встречал, что много с помощью него много не нарисуешь... те неправильно так делать... Добавлено @ 22:46 Anikmar, а компонент свой создавать как??? расскажите поподробней Добавлено @ 22:48
а че посоветуешь? че юзать? чтобы ок все было, просто потом уже переделывать лень будет, хоть и придется менять не много, но все же... Добавлено @ 22:55 http://www.citforum.ru/programming/cpp/ole_ax3.shtml http://www.sysman.ru/index.php?showtopic=8423 тут смотрел, но че-то... |
| Автор: Лена 2.4.2009, 22:57 |
| Может для работы с большими объемами текста использовать сервер автоматизации Word? Все необходимые компоненты для Word имеются в Builder по умолчанию. Word возмет на себя всю работу с текстом и уже из него получать нужные данные в программу. Правда, необходимо наличие Word на компьютерах пользователей. Написание компонентов очень подробно рассмотрено в этой книге: http://www.books.ru/shop/books/341882 может, есть где-то в электроном виде. |
| Автор: Dmi3ev 2.4.2009, 23:04 | ||||
оно конечно можно, но пользователь должен делать только то что я ему позволю, а в ворде будет сложновато за ним следить, там многовато возможностей... при этом при работе с текстом мне нужны будут некоторые необычные функции, собственно из-за этого и хочу переделать стандартный компонент под себя... проще реализовать это с помощью какого либо компонента... только какого???
спасибо, качну... |
| Автор: mrbrooks 3.4.2009, 07:54 |
| 1. RichEdit вещь кошерная. Особенно в 2009. Здесь он базируется на второй версии winapi контрола. 2. Зер гуд. 3. Для работы с реестом в Бормане есть классы. Использовать их не сложнее ini. 4. Зависит от того, что рисовать надо. |
| Автор: Dmi3ev 3.4.2009, 08:37 | ||
а делать я буду на шестерке... покатит??? Добавлено через 22 секунды THandle, спасибо, надо будет разобраться... |
| Автор: Anikmar 3.4.2009, 08:48 | ||
ИМХО и еще раз ИМХО В своей практике я создал только один простенький визульный компонент (в смысле не пробный, а тот, который затем использовал). Это некое подобие TDBEdit с несколькими добавленными наворотами. В общем провозился я с ним наверное дня два, если не больше и лично для себя сделал вывод: если я не собираюсь целенаправленно заниматься разработкой компонент - то это мне не нужно. Особенно, если проектом занимаешься на разных машинах. Когда мне понадобилось расширить еще один визуальный компонент (DBGrid - мне нужно было его хорошо раскрасить, автоматически выравнивать ширину столбцов при изменении размера окна, выводить кнопочки в ячейках и т.п.) - я отказался от создания компонента и создал свой класс обертку, в который при инициализации передаю стандартный грид и он с ним делает что хочет. В результате при переносе из шестерки в 2006 и позже в 2009 первый компонент пришлось пересобирать и устаналвиать, а вот класс обертка ничего не потребовал - откомпилил и все. В общем сугубо дело вкуса, но лично я пока не планирую создавать больше компонентов - тем более есть много готовых красивых библиотек компонентов, разработанных теми, кто зарабатывает этим себе на жизнь. Само по себе создание компонента дело не сложное, но какое-то неудобное, что-ли. В общем не мое. Но это лишь мое мнение - тут кто как сам знает. Мне лично не понравилось создавать компоненты, но это не значит, что их не надо создавать. Кому-то может и понравится. Так что попробуйте, поиграйтесь - может вам и пойдет. Что касается невизуальных компонентов - то тут я считаю, что класс обертка получается намного быстрее. Конечно редактор свойств дело хорошее, но это если продавать компонент. Если использовать для себя - то проще обертку сделать и без всяких редакторов в дезайн-режиме обойтись. Это тоже ИМХО. Добавлено через 2 минуты и 39 секунд
Если бы эта кошерная вещь еще правильно rtf обрабатывала... |
| Автор: Dmi3ev 3.4.2009, 08:57 | ||
Я тоже особо компонентов не создавал, но подумал, что если это сделать, то это будет на века, те как-то надежно, не потеряется, не сломается, не хз, что там еще...
да мне просто с текстом надо будет делать некоторые необычные вещи, поэтому либо писать что-то для работы с компонентом, либо компонент (что хотелось бы, как-то это больше мне нравится, может и зря)... |
| Автор: mrbrooks 3.4.2009, 08:59 | ||
хз для RAD-системы все очень даже по-эротомански. Иначе пишем все на WinAPI Добавлено через 7 минут и 14 секунд
имхо - это самый верный выход |
| Автор: Dmi3ev 3.4.2009, 09:23 | ||
написал для пробы
и программа повисла (не отвечает)... может еще что-то надо для таких объемов (порядка 350 страниц в ворде)??? а в 2009 такое проканает??? |
| Автор: mrbrooks 3.4.2009, 09:30 |
| Dmi3ev, для работы с rtf друг мой в RichEdit , его свойство PlainText д.б. = true |
| Автор: Anikmar 3.4.2009, 09:32 | ||||
Попробуйте. По большому счету - собственный компонент это тот же класс, с добавлеными возможностями по дезайн-режиму (соответственно с сериализацией). Если свойств, которые настраиваются в дезайне и меняются достаточно часто, много - то скорее всего компонент будет удобнее. А вот сколько времени у вас на него уйдет - это не прогнозируемо. Возможно вы гораздо бустрее меня вникнете в суть и нашлепаете его за неделю.
Недавно обсуждалось как в рич вставить разрыв страницы. Как раз WinAPI понадобилась. |
| Автор: Dmi3ev 3.4.2009, 09:36 | ||
спасибо, кстати маленький ртф он у меня загрузил почему-то...))) только теперь бред выводит какой-то, почему-то... что делать, mrbrooks, СОС... |
| Автор: mrbrooks 3.4.2009, 09:37 |
| Dmi3ev, можешь выложить этот *.rtf сюды? |
| Автор: Dmi3ev 3.4.2009, 09:45 |
| вот! я его получил таким путем: открыл документ ворд, нажал сохранить как и сохранил вот так... |
| Автор: mrbrooks 3.4.2009, 09:46 | ||||
оно понятно. тут главное что бы один документ был. ща заценю. Добавлено через 2 минуты и 58 секунд
оно понятно. тут главное что бы один документ был. ща заценю. Добавлено через 6 минут и 38 секунд Dmi3ev, плохой тебе совет я дал с PlainText. Не используй его. Дело в том что твой файл тянет на 4 метра. Тут и Ворд заклинит. Мое предложение - использовать TFileStream и повесить на гуй индикатор загрузки. Добавлено через 11 минут и 51 секунду И поток присобачить не мешает |
| Автор: Dmi3ev 3.4.2009, 11:35 | ||||||
| я че-то делаю как олень))) но не в этом суть))) возникли проблемы, если пишу так:
то все относительно хорошо (текст добавляется, лейбл обновляется), но в конце возникает ошибка ereaderror stream error, да бог с ней (http://www.freepascal.org/docs-html/rtl/classes/ereaderror.html), суть не в этом... так вот а если закомментить строку:
то ничего не обновляется, поэтому каждый раз в цикле (в конце) пишу (пока это единственный выход, который придумал, который прост):
ЗЫ как узнать, что конец уже, дальше грузить не надо... понимаю, что (fi->Position)<(fi->Size) глуповатое условие... |
| Автор: THandle 3.4.2009, 11:58 | ||
Dmi3ev, я бы такие большие файлы не стал бы сразу грузить и отображать. Можно было бы хранить все это в каком то куске памяти(типа TStream), и по мере надобности подгружать это в RichEdit... Можно даже попробовать подгрузку осуществлять с помощью доп. потока.
Не вижу тут ничего глупого Кстати IntToStr в подобном цикле будут очень сильно тормозить программу. |
| Автор: mrbrooks 3.4.2009, 12:20 | ||||
типа этого.
|
| Автор: xvr 3.4.2009, 17:10 | ||
Конструкция
|
| Автор: Dmi3ev 3.4.2009, 21:27 | ||||||
я это понимаю, но пока задача хоть как-то это загрузить, а далее буду все расчитывать и предусматривать
тоже учту потом, сделал это для себя... пока... чтобы визуально наблюдать процесс...
пока это не принципиально... важна сама загрузка... задача стоит в том, чтобы загрузить текст большого объема, и при этом чтобы не екнулось все... |
| Автор: xvr 3.4.2009, 21:40 | ||
Поставь эксперимент - открой свой 'файл большого объема' в WordPad'е Там как раз RichEdit20W |
| Автор: Dmi3ev 3.4.2009, 22:01 | ||||
теперь вот это надо действительно победить, как можно сделать что-то типа, только более быстрое...
потому как так будет тормозить ужасно... хотя думаю, сработает... |
| Автор: Anikmar 3.4.2009, 23:00 |
А чего не ->Lines->Add ? Зачем сто раз такие объемы гонять? |
| Автор: xvr 3.4.2009, 23:11 | ||||||
Будет тормозить. Что бы не тормозило надо сделать так -
PS. RichEdit собственно справляется, проверил? |
| Автор: Dmi3ev 4.4.2009, 07:24 | ||||
Anikmar, ты не в теме... xvr, спасибо, но думаю, того, что ты предложил хватит пока...
Да, тянет, еще как! Пока только на тхт проверял, но работает довольно быстро... |
| Автор: Anikmar 4.4.2009, 09:54 |
Не понял? |
| Автор: xvr 4.4.2009, 09:59 |
См. http://forum.vingrad.ru/index.php?showtopic=254012&view=findpost&p=1832281 и http://forum.vingrad.ru/index.php?showtopic=254012&view=findpost&p=1832716. Теперь понял? |
| Автор: Anikmar 4.4.2009, 11:06 |
Краткость не всегда сестра таланта. Я имел виду, что метод Add неплох - надо только буфер парсить перед добавлением, чтобы построчно добавлять. Но теперь знаю, что и это не вариант: Ворд открыл этот файл за 1 минуту Вордпад - 22 секунды RichEdit - не знаю, до сих пор открывает (минут 10 прошло) - причем подвесил комп минут на 5 так, что даже NumLock не срабатывал. (Открываю тупо LoadFromFile) Из этого вывожу свое ИМХО: Использовать RichEdit для таких громадных файло не получится. Как они там это внутри делают не знаю, - можно поковырять исходник рича и переделать его по-своему, но все-таки не то. Второе ИМХО: Хотелось бы подробнее узнать постановку задачи. Чует мое сердце, что тут все можно быстрее организовать - небольшая промывка мозгов пользователям и перестройка подхода к системе. |
| Автор: xvr 4.4.2009, 12:08 | ||||||
RichEdit нужен правильный - 2.0 и Unicode. WordPad использует именно его
Вообще идея показывать пользователю документ на тысячи страниц, list box'ы с сотнями тысяч элементов, картинки с тысячами элементов на них и пр. гигантоманские планы могут быть на ура встречены только закоренелыми мазохистами в 3м поколении Сделать такой интерфейс можно, но подумайте о своих пользователях - им же придется часами сидеть перед экраном, что бы среди всей этой кучи хлама найти крупицу информации, которая их интересует. Иголку в стоге сена найти будет проще |
| Автор: Anikmar 4.4.2009, 12:39 | ||||
Я проверял на 2009. А как узнать версию?
Целиком и полностью согласен. |
| Автор: Dmi3ev 4.4.2009, 15:35 | ||||||||
именно для таких и должна быть возможность загрузки всего файла целиком...
как раз поиск - главная идея... Anikmar правильно сказал, расскажу немного о задаче. Задача собственно такова: если кто сталкивался (а я думаю таких много) с Гарантом и Консультантом, то мне нужно что-то вроде этого сделать (менее масштабно, да и алгоритмы поиска попроще будут само собой), но в области (это уже не суть важно, оставлю в секрете расскажу подробнее с точки зрения пользователя: 1) запустил прогу 2) ввел интересующий его запрос 3) ему вывелись результаты (список документов, где встречается текст запроса, или что-то похожее на него) 4) после этого пользователь выбирает документ из списка (или его часть, главу, статью и тд, смотря какого типа документ, смотря какой запрос) и тут возможны варианты, если пользователь-обычный, то он посмотрит часть документа и успокоится (получив необходимую информацию продолжит работу), а если он из партии юных мазохистов, то ему тоже будет чем заняться (а такие есть и их не один и не два)... именно для них будет возможность загрузки всего файла... + в нем будет сделана подсветка текста, который удовлетворяет запросу... 5) пользователь сделал закладку, чтобы в следующий раз не искать, вышел... Про остальные задумки не буду рассказывать, потому как пока реализовано немного... Дойдет дело, расскажу...
Таким макаром, как мы делаем можно грузить и не такие файлы, грузится порядка 2 сек у меня... я про uk.txt. поэтому мне такую опцию надо предложить, да и вообще полезно будет уметь такое делать с Ричем... xvr, пока не было еще возможности проверить твой вариант, вечером отпишусь... Anikmar, извини, если обидел вот этим
не хотел обидеть... ни в коем случае))) |
| Автор: Anikmar 4.4.2009, 15:57 |
И не думал обижаться Я почему-то сразу о гаранте и подумал. Мне кажется надо БД как в гаранте. Раскинуть документы по статьям/собственно документам, сделать нормальную индексацию для поиска. Загрузить в рич большой текст можно - работать с ним неудобно. Тут полноценный гипертекст нужен. С перекрестными ссылками на смежные документы и т.п. Задача сложная, объемная, но решаемая. Сложнее мне видится ее потом сопровождать - вносить необходимые поправки изменения и т.п. В гаранте над этим целый отдел трудится. |
| Автор: xvr 4.4.2009, 16:03 | ||||||
Варианта 2:
Добавлено через 12 минут и 21 секунду
А там отдельный файл достигает нескольких тысяч страниц? Если нет, то и проблемы нет - не надо все результаты запроса показывать в виде одного текста. Нужна удобная система гипертекстовых ссылок, причем все должно показываться на одном экране (никаких открывающихся окон и пр) |
| Автор: Dmi3ev 4.4.2009, 16:29 | ||||
почему, я в самом начале темы сказал, 500-1000, в файле, который я выложил порядка 350 страниц... да и больше не будет похоже, те 350 - максимум...
все результаты не буду, но если пользователь зашел в один из них (выбрал из списка результатов главу, часть, статью, неважно, те какую-то небольшую составляющую большого документа (350 страниц )), надо чтобы была возможность посмотреть документ целиком (может этим будут пользоваться единицы, но так надо)... Тем более, появился спортивный интерес так сделать, я думал, что воспользуюсь LoadFromFile и долов-то, ан нет... Теперь знаю, что не так-то все просто))) Уже даже мне хочется такую штуку вбабахать в программе))) |
| Автор: Dmi3ev 4.4.2009, 17:06 | ||
пока вот в таком виде, боевом, но уже работоспособном:
ProgressBar специально для mrbrooks, больше ни для кого и ни для чего Всем спасибо, тему пока не закрываю, еще не всё |
| Автор: Gradov 5.4.2009, 11:15 | ||||
Если со скоростью TRichEdit проблемы можно попробовать ActiveX компонент TRichTextBox, у него есть свой-во FileName. Забиваешь туда имя своего файла и все. Твой 4-х гигабайтный rtf-файл 2 сек. открывает. Также как, например File Lister в Total Commander по F3. |
| Автор: mrbrooks 6.4.2009, 07:53 | ||
В хелпе написано.
|