|
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
|
|
Дайте совет по реорганизации и оптимизации исходника19.04.2011, 01:45. Показов 1173. Ответов 6
Метки нет (Все метки)
Здравствуйте, формчане. У Вас здесь я пишу впервые, хотя некоторое время уже следил за жизнью форума и обсуждением его тем. Я не искушен в программировании, опыт минимальный, поэтому прошу совета. Создал программу на С++ Builder 6.0 под Windows XP, смысл которой - внесение текстовой информации, вводимой вручную в поля ввода или из полей таблицы exel-файла, в поля xml-файлов. Полей не то, чтобы очень много, но и не мало. В общем, в файле модуля главной формы получилось что-то около двух тысяч строк. Работает в общем-то без нареканий, но при разработке возник следующий вопрос. Дело в том, что когда код разросся, стало не удобна навигация по нему и поиск кода реализации нужных функций. В будущем не исключаю, добавить функциональность программы, что естесственно повлечет еще большее увеличение объема кода главной формы приложения и еще большие неудобства. Например в MS Visual CPP и некоторых других современных средах программирования есть возможность "схлопывания" кода функций (expand и collaps), кстати почему-то не нашел эту возможность и в eclippse. Не знаю, может в RAD Studio эта фича уже и есть, но эту среду мне еще не приходилось юзать. С моей стороны была попытка разбить код модуля хотя бы на два файла с реализацией функций, но что-то запутался с включением хедера. Дело в том, что в хедере главной формы объявлен всего один класс самой формы (также в него входит несколько полей типа нестандартного автономного класса, но описание этого класса занимает немного места). Так вот, раз в хедере один класс с большим количеством функций, то как правильно разнести в два файла реализацию этих функций? Например, в один файл-cpp вставить уже отлаженные функции, например кучу маленьких функций проверки на валидность вводимых данных, обработки событий связанных с реакцией на команды меню и прочее, а в другой файл функции инициализации, создания и обработки xml-файлов, то есть те, которые еще придется доработать? Ведь к обоим cpp-файлам придет подключать один и тот же хедер, что уже очень не хорошо! Система ругается и правильно делает. Как-то разбивать на части класс главной формы - подозреваю, что и это не правильно, да и не представляю как это делать. Подскажите выход! Как мне представляется, это не проблема и ответ где-то рядом и он не сложен, но что-то не могу сообразить.
Ну и еще один вопрос. Подкиньте инфу по работе с xml-форматом в C++. А то я для скорости получения желаемого результата, не стал вникать в подробности и просто формировал xml-файлы из элементов строчного массива типа AnsiString, сцепляя xml-теги с данными из полей ввода моей программы, что не очень эстетично, да и раздувает код, который, по видимому, можно сократить, применив функции из какой-нибудь библиотеки для работы с xml-форматом. Заранее благодарю за отзывчивость и помощь! И удачи в освоении безграничных киберпространств! С++ is my love FOREVER!!! (Кстати, если раньше тоже считал, что Windows must die, то сейчас она мне стала нравиться много больше, хотя недостатков все-таки еще хватает).
0
|
|
| 19.04.2011, 01:45 | |
|
Ответы с готовыми решениями:
6
Дайте совет по оптимизации
Дайте пожалуйста совет сайт на предмет оптимизации |
|
|
|
| 19.04.2011, 03:51 | |
|
кто дочитал это до конца - отзовитесь
, с меня причитается
1
|
|
|
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
|
|
| 19.04.2011, 14:18 [ТС] | |
|
Что ж, конечно вероятно, что я выше наговорил лишнее, и к тому же изъяснялся не слишком понятно, за что прошу снизхождения и прощения. Но все-же, прочитав хотя бы вторую половину моего первого поста, подскажите выход.
0
|
|
|
|
|
| 19.04.2011, 14:40 | |
|
где начало второй половины ?
0
|
|
|
|
|||||||
| 19.04.2011, 18:05 | |||||||
|
просто создал cpp-файл через меню, сохранил, затем переместил в него реализацию конструктора класса и запустил проект. вообщем, вот так у меня:
1
|
|||||||
|
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
|
|
| 20.04.2011, 00:53 [ТС] | |
|
К сожалению, попытку разбивки я предпринимал уже довольно давно, потому деталей не помню, но вроде помню - ругалась система на повторное использование каких-то объявлений в хедере. Скорее всего, я сам что-то не корректно сделал. Помню, что в меню выбрал создание не просто cpp-файла, а модуля, а потом, по-моему, в хедере нового модуля вручную добавлял включение хедера главной формы. Здесь видимо и была моя ошибка. Через денек попробую сделать просто cpp-файл, как вы советуете. Результат сообщу.
Остается еще вопрос о работе с xml-форматом в С++. Подскажите, где почитать?
0
|
|
|
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
|
|
| 23.04.2011, 15:38 [ТС] | |
|
Да, действительно все получилось!!! Оказывается все так просто! Еще раз спасибо kzru_hunter!
О работе с xml в гугле очень много ссылок, но практически все на английском - трудно и долго читать. И опять же очень много разных вариаций и библиотек, на которой лучше остановиться прямо не знаю. В c++ builder есть компоненты для работы с xml, но в билдере у меня, увы, не установлен help. Что посоветуете?
0
|
|
| 23.04.2011, 15:38 | |
|
Помогаю со студенческими работами здесь
7
Дайте советы по оптимизации Дайте совет по БД Дайте совет Дайте совет Дайте совет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|