![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Я ж правильно понимаю, что вызов процедуры объекта с 4 параметрами по занимаемому коду равнозначен обычной процедуре с 5 параметрами?
Я обнаружил, что все поля TEdit, параметры которых мне надо менять в ходе выполнения программы, всегда имеют одну и ту же высоту 21 И если сделать такую процедуру - сократит ли она код при многочисленном применении в теле программы? Код:
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
десятки , сотни, ... ? вы заменили эти N вызовов ОДНОЙ процедуры на вызов другой процедуры числом параметров на 1 меньше т.е. уменьшили "код вызова" скажем на 10 байт. общий объем кода уменьшится на 10 * N байт. (десятки)10 *10 = 100 (сотни) 10 *100 =1000 ....
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Вопрос такой: я правильно понимаю, что в процедуру объекта всегда добавляется 1 параметр - ссылка на объект? И правильно ли я понимаю, что вызов процедуры объекта с 4 параметрами - идентичен вызову обычной процедуре с 5 параметрами?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
И чтобы не создавать тему - как узнать размер когда одной процедуры?
Просто у меня на компе заметить изменение итогового файла можно только если оно больше 512 байт |
![]() |
![]() |
![]() |
#5 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]() |
![]() |
![]() |
![]() |
#6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,812
|
![]()
Kronos913, если вас так беспокоит размер исполняемого файла, то первое, что вам надо сделать, это отказаться от библиотеки VCL, то есть от всяких там TButton, TEdit и вообще конструктора форм в Delphi. Узнайте про библиотеку KOL, которую специально создавали под ваши задачи. Кстати, ее можно интегрировать и в визуальный конструктор форм, если нет желания прописывать все ручками.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#7 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
Нет. Не правильно. Ссылка на экземпляр объекта это неявный параметр. И он не занимает место в памяти. Это всего лишь содержимое регистра аккумулятора в момент вызова метода объекта.
|
![]() |
![]() |
![]() |
#8 | ||
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]() Цитата:
Цитата:
Вообще, как понимаю, вопрос тут не о длине кода как таковой, а о его ожидаемой эффективности с точки зрения компилятора или процессора, так ведь? Длина кода ≠ эффективность. В частности, при написании обычной прикладной программы я бы не задумывался о длине машинной инструкции, помещающей константу в стек, а руководствовался бы чисто прикладными соображениями, той же инкапсуляцией действий, но в прикладном смысле. Какова исходная задача? Вот над чем можно задуматься в плане эффективности кода, если хочется попарить мозг и типа наработать опыт, — так это над оптимизацией обращений к процедурным свойствам: Код:
|
||
![]() |
![]() |
![]() |
#9 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
Ну вам виднее, если вы действительно вникли в контекст вопроса. Я лично и не пытался это сделать. Слишком это вредно для мозгов.
![]() Я лишь рассказал ТС правду о том самом неявном параметре метода класса. Как именно он передается в этот самый метод. |
![]() |
![]() |
![]() |
#10 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
Автор темы имеет привычку не давать обратной связи после решения вопроса, но замолкает он, как правило, после моих ответов, если они в теме есть. Из чего делаю вывод, что некий контакт налажен.
Маргинал всегда поймет другого маргинала, если захочет. Плюс, в отличие от многих, я прекрасно помню, как в свое время приходилось учиться в одиночестве и при отсутствии информации (Интернета еще не было), какие вопросы при этом возникали. Удивляет, конечно, что у вопросы у автора возникают уже при наличии Интернета, но, с другой стороны, если учиться без учебника и без наставника, кусочно-разрывно один на один с задачами, далеко не всё можно загуглить, особенно если не знаешь даже, как оное обозначить. Как в анекдоте: что мы раньше называли оргазмом — оказалось астма. Так что, если вопрос не тупой, почему бы не дать на него небанальный ответ, расширяющий кругозор? Стараюсь держать марку. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Управление объектом | MexL | Общие вопросы C/C++ | 1 | 28.01.2019 22:42 |
Работа с объектом Request | OlgaRostov | ASP.NET | 2 | 14.12.2015 22:49 |
Проблема с COM объектом. | Son | Общие вопросы Delphi | 0 | 10.01.2013 23:01 |
слежение за объектом | Giku | Свободное общение | 12 | 18.04.2012 15:20 |
Проблема с COM объектом | resu654 | Общие вопросы Delphi | 2 | 25.05.2009 23:00 |