
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.11.2006, 09:09
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Здравствуйте всем. Сейчас понял, что ранее никогда не создавал искусственных Unit'ов (ранее они создавались с формами). Сейчас получается здоровый main файл и, хотя бы, для удобства навигации надо функцию обработчик нажатия каждой кнопки поместить в отдельный файл. Как сделать, чтоб объекты формы были видны из новых Unit'ов, где писать include чтоб вся конструкция работала? Буду очень благодарен, тем более за примеры кода:) Спасибо. BCB 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 09:15
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
Так у тя Delphi или BCB??? Кстате, кросс-постинг наказуем! I Live Again! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 09:24
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
У меня ВСВ 6. Просто на Delphi более активный форум:) Думаю разницы особой не будет. А про наказание я не знал, больше не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 09:26
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
NotfromУ меня ВСВ 6. Просто на Delphi более активный форум:) Думаю разницы особой не будет. А про наказание я не знал, больше не буду.Ок. В принципе тебе там ответили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 09:58
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Как мне в Main.cpp надо вызывать функцию PushButton1(), если она обявлена в модуле в следующем классе? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 10:02
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
Это бессмысленный ifndef. По вопросу: сделать инклуду в мэйне требуемого заголовочно файла Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 10:24
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Это я сделал, а как теперь функцию вызвать? PBUTTON1::PushButton1 () ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 10:29
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
NotfromЭто я сделал, а как теперь функцию вызвать? PBUTTON1::PushButton1 () ? Функции класса служат для обработки объектов, которые создаются по типу этого класса. (небольшое исключение - статические). Поэтому они вызываются, через сам объект. obj1.func() или obj1->func() в зависимости от способа создания объекта, статически или динамически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 10:36
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Тогда как проще, и вообще нужен ли этот класс. Я пробовал так: PBUTTON1 qwe; qwe.PushButton1 (); Но выводится ошибка( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 10:44
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
NotfromТогда как проще, и вообще нужен ли этот класс. Я пробовал так: PBUTTON1 qwe; qwe.PushButton1 (); Но выводится ошибка( Нужен ли класс? Взависимости от того что твоя функция выполняет. Для чего нужны функции классов (методы), я уже написал. Когда выводится ошибка, копируй ее в форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 11:05
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
От себя добавлю еще один вопрос, касающийся сабжа. Читал разные книги по С, но ни в одной не нашел грамотного объяснения того, как действительно рационально делить программу на модули (читай разные файлы с исходниками) Посему несколько вопросов: 1) Как влияет #include хидера на размер бинарника? Влияет ли вообще? Например, я в 3х срр файлах с реализацией разных классов включаю <windows.h>. Он мне нужен для работы. Можно ли включать его подругому?? 2) Какова связь между .cpp исходником и .h хидером которые написал сам??? Верно ли, что на один cpp должен приходиться один хидер? 3) Я в хидере описал некоторые константы (ну не совсем константы, а дефайны имя-номер) Хочу использовать эти константы, как возвращаемые значения публичных методов некого класса. А анализирую их в другом файле. Как мне сделать эти константы видимыми для обоих файлов?? А если их не 2, а 10?? Заводить отдельный хидер, описывать в нем то что мне надо, и из каждого файла инклюдить? Я это потому спросил, что порой приходиться отказываться от деления программы на модули, и писать все в 1-2 файлах. А это очень громоздко... Ранее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы. А то уже достало листать сорцы тыщ по 5 строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 11:13
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Класс убрал, с ошибкой проблема решена:) Но как сделать, чтоб объекты формы были доступны в модуле? Описать их в Unit1.h с префиксом extern? Может проще както можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 11:19
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
Павел. СОт себя добавлю еще один вопрос, касающийся сабжа. Читал разные книги по С, но ни в одной не нашел грамотного объяснения того, как действительно рационально делить программу на модули (читай разные файлы с исходниками) Посему несколько вопросов: 1) Как влияет #include хидера на размер бинарника? Влияет ли вообще? Например, я в 3х срр файлах с реализацией разных классов включаю <windows.h>. Он мне нужен для работы. Можно ли включать его подругому?? 2) Какова связь между .cpp исходником и .h хидером которые написал сам??? Верно ли, что на один cpp должен приходиться один хидер? 3) Я в хидере описал некоторые константы (ну не совсем константы, а дефайны имя-номер) Хочу использовать эти константы, как возвращаемые значения публичных методов некого класса. А анализирую их в другом файле. Как мне сделать эти константы видимыми для обоих файлов?? А если их не 2, а 10?? Заводить отдельный хидер, описывать в нем то что мне надо, и из каждого файла инклюдить? Я это потому спросил, что порой приходиться отказываться от деления программы на модули, и писать все в 1-2 файлах. А это очень громоздко... Ранее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы. А то уже достало листать сорцы тыщ по 5 строк. 1. Как правило не. 2. Не обязательно. Хеадер в, основном, служит как паблик для всех кто будет пользовать cpp 3. Бывает, иногда используют, отдельный хеадер, что-то типа global.h, в котором все общее прописывают, но мне удобней инклудить хеадеры того, что пользую. Он служит как первоисточник данных о модуле. Еще можно делать хеадер хеадеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 11:21
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
NotfromКласс убрал, с ошибкой проблема решена:) Но как сделать, чтоб объекты формы были доступны в модуле? Описать их в Unit1.h с префиксом extern? Может проще както можно? Описать extern'ом. Но желательно строить программу так, чтобы модули пользовались чужими классами, а не объектами. У меня сейчас примерно 20-30 модулей и нет ни одного extern'а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 12:20
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
Павел. С1) Как влияет #include хидера на размер бинарника? Влияет ли вообще?инклюд - довольно тупая операция. Если в хэ-файле описаны только дефайны и екстерны - то в релизе на размер не влияет, если туда включен ещё компилируемый код - то на размер влияет всегда, при этом хэ-файл рекомендуют переименовывать в цэпэпэ. Павел. С2) Какова связь между .cpp исходником и .h хидером которые написал сам???никакой, проект на с++ - просто куча файлов, связи задаются явно инклюдами. Павел. СРанее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.на с++.нет писал? Там тоже надо с хидерами колупаться по полной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 12:49
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Павел. СРанее писал на .Net. Там не было хидеров, и было понятие "область видимости" (в cpp тоже такое есть, имхо). Как хотел, так и разбивал на файлы.на с++.нет писал? Там тоже надо с хидерами колупаться по полной.[/quot] Нет, на шарпе писал. А сейчас задачи другие немного... Низкоуровней надо и с использованием Win32 API. Потому и перешел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:01
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Люди:) Почему так все сложно, почему я не могу видеть в модуле объекты формы ничего не делая:) Akh, ты говоришь надо делать глобальными классы. Что мне теперь 20 Siries'ов, объявленных в class TForm1 в Main.h в какой то другой класс пихать? Запутался я, пятница думать не позволяет:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:06
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
NotfromЛюди:) Почему так все сложно, почему я не могу видеть в модуле объекты формы ничего не делая:) Akh, ты говоришь надо делать глобальными классы. Что мне теперь 20 Siries'ов, объявленных в class TForm1 в Main.h в какой то другой класс пихать? Запутался я, пятница думать не позволяет:) Ты видишь только то, что в ашниках прописано, т.к. ты их инклудишь. Знаешь что делает компилятор (вернее препроцессор), когда встречает твой инклуд? Ничего не понял, из того что ты сказал. Пропиши, что у тебя где лежит, и где что ты хочешь пользовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:24
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Понажатию кнопки я работаю с графиками, теперь эти функции мне надо перенести в модуль (Unit.cpp, Unit.h). Создал я этот модуль, прописал в Main'е: #include "Unit1.cpp" (или *.h тут надо?). Теперь мне надо в Unit.cpp написать, к примеру: Form1->Edit1->Text="Работай же, сволочь!"; Что надо прописать в Unit.h для этого? Ведь это д.б. просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:27
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
надо unit1.cpp инклюдить после объявления Form1, причём сам unit1.cpp компилировать не надо, раз включаешь его в мейн целиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:40
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
График описываешь в Unit1, в ашник пишешь описание класса. Кнопки описываешь в Unit2, в ашник пишешь описание классов. В юните 2 cpp инклюдишь график. В Main'e инклюдишь оба ашника юнитов и создаешь графики и кнопки. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:41
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
В самом конце main.h написал: Код: plaintext А он мне ошибку: Undefined simbol Edit1..... Что надо прописать в Unit.h, он пустой д.б.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:42
|
|||
|---|---|---|---|
|
|||
Как грамотно разбить прогу на модули? |
|||
|
#18+
Akh , щас попробую. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2006, 13:44
|
|||
|---|---|---|---|
Как грамотно разбить прогу на модули? |
|||
|
#18+
Ты хоть понимаешь, как работает #include? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2030011]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 464ms |

| 0 / 0 |
