|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||||||||||||||||
Переношу процедуры в отдельный модуль подскажите по структуре14.11.2023, 08:45. Показов 1976. Ответов 47
Метки нет (Все метки)
Я начал выносить процедуры и функции которые были раньше методами главной формы, но по сути не привязаны к элементам самой формы, в отдельный модуль.
Программа работает. Но хотелось бы сразу уточнить немного струкутру. С толку сбило что в модуле не работает Контрл+Шифт+С выдавалась ошибка до тех пор пока я просто не написал реализацию функции ниже в коде. Контрл+Шифт+С видимо не работает в модуле *.pas, только с формаой? 1)Посмотрите структуру пожалуйста, последовательность, все верно interface, uses,type, procedure, var, implementation, uses ? TUser да объявлен каряво но я только прочитал про свойства и поля потом переделаю. 2) И второй вопрос для реализации методов класса TConfig (их описания) нам нужно объявить переменную этого класса? Я подозреваю что у меня сделано не верно. У меня объявлена глобальная переменная Config
Я подозревая что внутри каждого метода класса TConfig будь то InitConfig или еще какого либо я должен объявить переменную ConfigLocal: TConfig; и в описании методов использовать её, а не глобальную переменную Config. А уже в основной программе на главной форме писать
Или все верно сделано что в модуле myUses1 объявлена глобальная переменная Config? Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
| 14.11.2023, 08:45 | |
|
Ответы с готовыми решениями:
47
выделить расчетную часть в отдельную функцию.функцию поместить в отдельный модуль.модуль подкл.к основной программе Разработать библиотечный модуль содержащий, процедуры и функции в соответствии с заданием. Применить данные процедуры в основной программе |
|
|
||
| 14.11.2023, 13:41 | ||
|
2015(18,19?) год. Промо-семинар, выходит очередная XXXE. Встает дама "с производства" - вот зачем вы все поломали со своим юникодом! так хорошо было на Д7!!! Обратная совместимость - очень забавная вещь. Она зачем??
0
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
||
| 14.11.2023, 13:42 | ||
![]() ------- Исчо бы тернарный оператор добавили, было б ващще супир. И если б тулбары не съезжали - вапще б космас был. ------- Поставил все левые компоненты и пересобрал несколько своих более свежих проектов. Собралось, работает! Можно юзать, кароче.
0
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
|
| 14.11.2023, 14:26 | |
|
Теперь некоторые (все?) inline-функции из system.pas, например Length(), High(), Low(), возвращают 64-битные значения на 64-битной сборке. Хотя хинты стались старые. У меня чуть фляга не засвистела!
Будьте осторожны, граждане.
1
|
|
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||||||||||||||||||||||
| 14.11.2023, 14:28 [ТС] | ||||||||||||||||||||||
|
И все же подумал что лучше внутри метода даже того же procedure TConfig.InitConfig; использовать свойства а не прямую запись в поле. Например я в свойство объекта Config.ColumnName читаю информацию из INI файла сейчас у меня идет просто запись в поле FColumnName т.к.
Так вот неплохо бы тут написать что то вроед read SetColumnName(...) дабы хоть как то отфильтровать что там в ini файле. Но это на будущее если руки дойдут.
А если инфа из конфигурационного файла или еще откуда то надо в свойство, а свойство уже со временем как руки дойдут можно дописать методом который будет это свойство-поле проверять и устанавливать. По итогу я бы сказал что надо писать в свойство для пущей безопасности, но если уверен в том что делаешь то можно и прямо в поле тем более если все эти установки чтения идут внутри объекта без внешнего чтнеия-установки полей.
0
|
||||||||||||||||||||||
|
|
|
| 14.11.2023, 15:00 | |
|
надо четко понять, что является чем
если свойство - объект, например, StringList, то это ССЫЛКА на объект т.е. вы не сможете заменить САМ объект. да и фиг с ним. А вот все свойства и методы этого объекта ну никак не относятся к property Именно поэтому я ввожу property только тогда, когда уже ТОЧНО НАДО вводить property Изначально просто поле. В любой момент его в коде позже можно заменить на property. Другое дело, если мы хотим СОВСЕМ скрыть, что у нас есть такое поле. Тогда нужно поле унести в private и оставить только методы доступа к нему. Ни того ни другого я в вашем случае не вижу. А вот про хранение настроек программы могу предложить почитать https://www.cyberforum.ru/blog... g4883.html
0
|
|
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,614
|
||
| 14.11.2023, 15:10 | ||
|
А на это я больно сел, когда для TIdTCPClient писал обработчик таймаута, поставил в exception вызов Connected. Прикол в том, что данный метод, лезет в сеть проверять подключение, т. е. exception летит снова. Я а, дурак, не могу понять, что не так. Так если вы в недрах класса что-то подобное сделаете вместо проверки внутреннего поля, то результат будет таким же, вы вызовете нежелательное действие. Думать надо, должен геттер\сеттер отработать, или это противопоказано. Чаще не должен.
0
|
||
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||||||||||||||||||||||
| 14.11.2023, 15:46 [ТС] | ||||||||||||||||||||||
|
1)
а например запись Config.ColumnName := nil; не является записью в сам объект? Я понимаю что это моежет быть тупы вопросы, но если не пойму то больше не буду, значит пока рано и не нужно. 2) Verevkin будет против ))), но получается что вот эти поля я могу перенести из private в publiс, убрать букву F в начале. И в место
0
|
||||||||||||||||||||||
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,614
|
||||||||||||||||||||||
| 14.11.2023, 16:09 | ||||||||||||||||||||||
|
Verevkin'у удобно написать
Конечно, того же самого можно добиться и старомодным
Другое дело, что если у вас там какое-то поле, которому не нужны геттер и сеттер, и вы совсем уж уверены, что вам не потребуется менять правила работы с ним, и для каких-то конечных классов, которые нужны только для конкретной задачи - это, скорее всего, будет верно. То да, можно засунуть в public, и так многие сделают особо не парясь, т. к. оформление всех этих методов раздражает. Поддержание порядка требует усилий. Это при том, что у Паскаля есть одна положительная черта, в нем нельзя писать код в интерфейсной секции, а в C#, например, можно и вместо простого списка компонентов класса, вы можете прямо после объявления метода увидеть сколь угодно длинную реализацию. После чего вам, возможно, захочется удавить того, кто все эти пустые геттеры и сеттеры накидал.
0
|
||||||||||||||||||||||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
|||
| 14.11.2023, 16:47 | |||
0
|
|||
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,614
|
|
| 14.11.2023, 18:43 | |
|
Ну так чел говорит, что ты будешь против переноса полей просто в public.
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
||
| 14.11.2023, 19:07 | ||
|
0
|
||
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,614
|
|
| 14.11.2023, 19:18 | |
|
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
|
| 14.11.2023, 19:26 | |
|
0
|
|
|
Модератор
|
||||||||
| 16.11.2023, 00:31 | ||||||||
1
|
||||||||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 16.11.2023, 21:34 | ||
|
Они обещали
0
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
|
| 16.11.2023, 21:38 | |
|
0
|
|
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 16.11.2023, 21:48 | ||
|
Не по теме: Это надо гдето регаться, искать поддержку, писать туда А ваще в releaseNotes поддержка W11 ими заявлена ,а эта фича как раз в ней и появилась.
0
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
|
|
| 16.11.2023, 22:00 | |
|
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
| 16.11.2023, 22:08 | |
|
0
|
|
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 16.11.2023, 22:10 | ||
|
Не по теме: Жаль что в однопроцессорном сегменте в ближайшее время не предвидится.
0
|
||
| 16.11.2023, 22:10 | |
|
оформите в отдельный модуль
Вынос переменных в отдельный модуль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|