|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
Вынос кода из CPP во внешний файл04.01.2009, 17:24. Показов 6954. Ответов 25
Метки нет (Все метки)
Здравствуйте.
Используется С Builder 2006 На данный момент структура проекта http://fierytrance.ru/c/forum/1.png выделенный файл cpp вырос, хочется раскидать код на несколько файлов. (скажем по крупной функции в отдельный подгружаемый файл). Как это сделать правильно?
0
|
|
| 04.01.2009, 17:24 | |
|
Ответы с готовыми решениями:
25
Вынос переменной во внешний запрос Вынос фрагмента кода |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 04.01.2009, 17:26 | |
|
Структура проекта мало о чем говорит. Выдели функции по их виду деятельности по модулям. В .h - объявления, в .cpp - реализация. Потом подключаешь хеадер, где нужно, и используешь функции.
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 04.01.2009, 17:28 | |
|
создаешь для новых файлов хидеры, туда выносишь прототипы функций, в срр пишешь реализации, ну и потом через дериктиву include подключаешь нужные хидеры
упс... Vourhey, не видел твоего ответа
0
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||
| 04.01.2009, 19:23 [ТС] | ||
|
Проект состоит из одной формы, cpp и h файла.
К сожалению, как программист лишь начинающий, в книгах (самоучителях) ничего подобного не расписано. Собственно все неудобство сейчас, слишком много текста, который неудобно прокручивать от одной функции к другой, или когда функция большая,а работаешь над частью кода. В будущем как понимаю надо будет все функции кидать в отдельные библиотеки, но пока до этого еще не дорос. Можно чуть подробнее про это
0
|
||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 04.01.2009, 20:49 | ||
|
0
|
||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||||||||||||
| 04.01.2009, 21:07 [ТС] | ||||||||||||||||
|
Не получается создавать файлы. При переносе текста в них ничего не работает.
Например при создании еще одного cpp+h, h дополнительного файла инклудится в основной, при переносе функции туда, они перестают работать, т.к. не видят форму. Понимаю, что надо еще что-то дописывать куда-то, но что, не знаю. Второй момент, а если мне нужно перенести не только функцию целиком, а лишь кусок ее? или кусок с переменными? Есть ли возможность делать прямую вставку кода из внешнего файла? Например код до
0
|
||||||||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 04.01.2009, 21:12 | |
|
Слушай, я смотрю на твой код и понимаю, что ты, практически, не знаешь С++. Почитай статьи про заголовочные файлы С++ и их создание. В интернете полно. Описывать здесь все это мне откровенно лень.
0
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||
| 04.01.2009, 22:02 [ТС] | ||||||
|
Не хочется показаться грубым.
![]() Почему стоит задать простой вопрос, как на него ответы в духе "почитай книги". А когда приводишь список 10 книг и выкладок из них, которые не работают в принципе, появляется второй совет, "пробуй делать как получается, ничем помочь не можем, сами когда так начинали, смотрели там, сям и что-то делали". Если лень ответить, то зачем вообще отвечать? На данный момент надо лишь разбить крупный файл на мелкие. Лишь потом будет нормальная оптимизация. Неужели нет простой команды вставки кода из внешнего файла, допустим temp.txt? Да, возможно делать код по другому правильнее, но увы, я только начинаю писать на С++. Сейчас нужно разобраться с такой вот ерундой. А уже потом с чем-то более сложным. Добавлено через 11 минут 25 секунд В код вставлено
В тело же cpp файла temp.txt не подгружается, пишет [C++ Error] raa2.cpp(459): E2209 Unable to open include file 'temp.txt'
0
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 04.01.2009, 22:13 | |
|
Да потому что вам лень читать и вы лезете со всякими вопросами, о которых написано везде и кругом. Вопрос простой. Так же я могу задать простой вопрос "ой, а объясните мне в двух словах, как написать программу". Кранты...
Выделяй свой код в функцию. Функцию в заголовочный файл. Заголовочный файл в область видимости компилера (где стандартные инклуды, либо, где сам исходник). Подключай и юзай функцию. Вас че, как котят носом тыкать? ты даже вообще ничего не читал, если свой файл заголовочный как .txt обзываешь. Если ты сам не стремишься ничего узнать, я не собираюсь тебя за уши тащить. P. S. "глупых вопросов не бывает, бывают глупые люди..." Добавлено через 3 минуты 19 секунд http://www.csu.ac.ru/~dem/lang... odule.html удели время.
0
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||
| 04.01.2009, 22:27 [ТС] | ||||||
|
Я не спрашиваю, как код кинуть в отдельную функцию, а функцию в отдельный файл. temp.txt не является заголовочным файлом. Неужели сложно внимательно прочитать вопрос?
Вопрос Как вставить произвольный кусок кода, из отдельного файла. Для тех, кто читает по диагонали еще пара примеров. Полное содержание temp.txt
0
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 04.01.2009, 22:48 | |
ты че, слепой совсем? Я те ссылку дал же! Там же все написано и пример дан. Иди на фиг С++ учи... мля, ну ты и написал... ![]() Добавлено через 4 минуты 52 секунды Я тебе подскажу. Никак.
0
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
| 04.01.2009, 23:07 [ТС] | |
|
Действительно, помочь не сможете, раз не можете даже прочитать внимательно вопрос. А вы сами тот пример по ссылке читали? Там только про создание модулей. Про простую вставку кода ни слова.
![]() Для особо внимательных - include должен работать как PHP, без всяких ограничений вроде "следует помнить, что все описанные в теле модуля константы и типы данных не будут доступны в используемой этот модуль программе"
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 05.01.2009, 01:12 | |
|
romanrex, да нет такой вставки, которую ты хочешь... и вообще выносить методы класса в отдельный файл не стоит ИМХО... если у тебя есть просто функции какие-то, их можно вынести в отдельный файл... я для таких функций обычно создают functions.cpp... раз уж так сложно тебе понять, выложи код, посмотрим, как его можно разбить...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.01.2009, 01:17 | |
|
romanrex, я же тебе уже написал выше, что никак
Или тебе надо 36 size и красным шрифтом? ![]() WooDooMan, ему ж не разбить надо. Это чудо хочет код как копипастом код вырезал, код вставил...иглавное упертый такой, что я аж злой...
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 05.01.2009, 01:22 | |
|
Vourhey, вроде бы задание по-другому звучало, или это в процессе обсуждения выяснилось?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 05.01.2009, 01:28 | ||
|
Задание-то звучало, а ты посмотри на его пример на первой странице, что он там хочет...
![]() Лан, пофиг, я уже забил ) дохлый номер...
0
|
||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
| 05.01.2009, 01:43 [ТС] | |
|
Во время отладки программы код растет, т.к. подробно даются комментарии, создается ворох временных переменных. В итоге код становится большим, и когда идет работа над определенным местом, просмотр чего-то вдали (например переменных, которые в двух местах - самом начале cpp файла, и в начале функции) приводит к неудобным прокруткам туда-обратно. Потом когда код отлажен, лишнее вычищается и код становится значительно меньше. Но работать очень не удобно.
За счет таких инклудов как в PHP, можно было бы выборочно выдернуть нужные куски кода и уже только с ними работать, с удобным переключением между ними. Если такие инклуды невозможны, возможно ли вручную настраивать сворачивание кода в Builder 2006? К сожалению в Builder возможность сворачивать куски кода работает странно. По умолчанию работает на автомате и как я понял, должно определяться именно начало и конец функции и соответственно целиком функцию сворачивать (что полезно лишьчастично). Вот как здесь http://fierytrance.ru/c/forum/3.png Обычно несколько первых так определяется для сворачивания, а потом остальные определяются как попало. http://fierytrance.ru/c/forum/2.png Если бы это можно было бы настроить вручную, то возможно было бы нормальным выходом для меня. P.S. - сама программа нормально работает. Разбивать файл на функции буду позже, когда отработаю основной функционал.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.01.2009, 01:54 | |
|
По-моему, это поддерживается только C# и Delphi с помощью комментариев region и endregion. По крайней мере, применения в билдере не видел еще...
0
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||
| 05.01.2009, 01:57 [ТС] | ||||||
|
Vourhey
На это для частного случая даны ответы про создание cpp+h (вынос функции целиком). Далее я уточнил, что нужно не такое решение. И вот вопрос, в каком посте написано, что так делать нельзя? https://www.cyberforum.ru/post89552.html Было сказано, что язык С++ мне неизвестен, и надо искать что-то про заголовочные файлы. https://www.cyberforum.ru/post89569.html опять про cpp+h https://www.cyberforum.ru/post89585.html еще раз и нигде ни слова, что такое невозможно. Лишь только болезненный смех ![]() Вот найдет по поиску эту тему еще кто-то, кому понадобится так же именно удобно работать с кодом, и будет он читать всякую фигню вместо конкретного решения...
0
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 05.01.2009, 02:07 | ||
|
По-моему, ты просто сам не знаешь, что тебе надо. То код, то функции, то свертка. Определись, наконец. А С++, все же, учи.
Ах, да. Болезненный смех забыл - ![]() Повторить? Добавлено через 3 минуты 12 секунд Добавлено через 1 минуту 5 секунд Вообщем, попробуй глянуть в сторону regions, но не думаю, что билдер их поддерживает. Куски кода ты в файл не вынесешь. Про создание модулей ссылка у тебя есть. P. S. теперь на все вопросы ответил?
0
|
||
| 05.01.2009, 02:07 | |
|
Помогаю со студенческими работами здесь
20
Вынос кода в именованную функцию Как вызвать в основном .cpp файле тот или иной .cpp файл
Вынос DTD в отдельный файл.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|