Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для yukhm
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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2011, 01:45
Ответы с готовыми решениями:

Дайте совет по оптимизации
Необходимо оптимизировать реализацию морского боя. Изначально поле представлял в виде символьного массива, естественно длинной 10х10 ...

Дайте совет по оптимизации задачи
Студенты и преподаватели очень любят столовую. Так как посетителей много, в столовой часто образутся очень длинные очереди. Студенты при...

Дайте пожалуйста совет сайт на предмет оптимизации
Дайте пожалуйста совет сайт на предмет оптимизацииMagicSun Самара

6
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.04.2011, 03:51
кто дочитал это до конца - отзовитесь , с меня причитается
1
 Аватар для yukhm
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
19.04.2011, 14:18  [ТС]
Что ж, конечно вероятно, что я выше наговорил лишнее, и к тому же изъяснялся не слишком понятно, за что прошу снизхождения и прощения. Но все-же, прочитав хотя бы вторую половину моего первого поста, подскажите выход.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.04.2011, 14:40
где начало второй половины ?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
19.04.2011, 18:05
Цитата Сообщение от yukhm Посмотреть сообщение
Так вот, раз в хедере один класс с большим количеством функций, то как правильно разнести в два файла реализацию этих функций?
только что попробовал разнести в 2 файла, никакой ошибки не было.
просто создал cpp-файл через меню, сохранил, затем переместил в него реализацию конструктора класса и запустил проект. вообщем, вот так у меня:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma hdrstop
 
#include "NeuronsNet.h"
 
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
 
NeuronNet::NeuronNet()
{
        ZeroNet();
}
1
 Аватар для yukhm
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
20.04.2011, 00:53  [ТС]
К сожалению, попытку разбивки я предпринимал уже довольно давно, потому деталей не помню, но вроде помню - ругалась система на повторное использование каких-то объявлений в хедере. Скорее всего, я сам что-то не корректно сделал. Помню, что в меню выбрал создание не просто cpp-файла, а модуля, а потом, по-моему, в хедере нового модуля вручную добавлял включение хедера главной формы. Здесь видимо и была моя ошибка. Через денек попробую сделать просто cpp-файл, как вы советуете. Результат сообщу.
Остается еще вопрос о работе с xml-форматом в С++. Подскажите, где почитать?
0
 Аватар для yukhm
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 28
23.04.2011, 15:38  [ТС]
Да, действительно все получилось!!! Оказывается все так просто! Еще раз спасибо kzru_hunter!
О работе с xml в гугле очень много ссылок, но практически все на английском - трудно и долго читать. И опять же очень много разных вариаций и библиотек, на которой лучше остановиться прямо не знаю.
В c++ builder есть компоненты для работы с xml, но в билдере у меня, увы, не установлен help. Что посоветуете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2011, 15:38
Помогаю со студенческими работами здесь

Дайте советы по оптимизации
Народ. Дайте советы, как оптимизировать сайт для Гугли. Сайт сейчас в разработке (т.е редакторы пишут тесты, дизайнеры диз. рисуют). ...

Дайте совет по БД
Начал изучение БД SQL с 2-го тома сами знаете кого. Так вот, там упоминается о активный запросах. Что это значит? Насколько я это понимаю,...

Дайте совет
Новичек в сей области, но начальство велело - значит нужно... Есть сайтик: sposob.ru... Не дадите по нему совета? Мож что на форуме...

Дайте совет
Здравствуйте уважаемые пользователи форума.Пишу я вам из Баку.Мне 26 лет.Характер очень тихий,спокойный,терпеливый.Больше слушаю чем...

Дайте совет
Можно ли в форму подставить данные со страницы? К примеру переходим на страницу с описанием товара, жмем на кнопку оформить заказ. Вводим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru