![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Вопрос такой:
Если в параметрах процедуры есть переменная TStrings, и перед ней не прописано ни var ни const, то она в таком случае копируется, или работает по ссылке как в случае с var ? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Вот такой код.
В этом случае идет напрямую обращение, как в случае с var? Код:
|
![]() |
![]() |
![]() |
#3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
Если верно понял ассемблер, то по ссылке (по адресу на объект). А по поводу остального кода: зачем игнорировать существование break (будет безусловный выход из цикла, а не лишняя проверка условия цикла); при известном количестве итераций лучше использовать цикл for (заодно свойство count не будет "дергаться" на каждой итерации цикла).
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]() Цитата:
Если ввести в параметр st единицу (чтобы фильтр не трогал нулевую строку), в TString'се на данный момент только нулевая строка, получится так: st = 1, (ss.Count - 1) = 0 И в этом случае for должен выдать ошибку По поводу остальных правок - большое спасибо |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,710
|
![]()
Да не ошибку - просто цикл не выполнится ни разу. На этапе компиляции компилятор не знает, что там в st и ss.Count . Если бы задавались константы
Код:
Последний раз редактировалось digitalis; 21.05.2021 в 11:26. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Я имел в виду: в процессе работы программа в процессе не выдаст ошибку, если в цикле for нижняя граница больше верхней?
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,710
|
![]()
Нет, просто цикл не выполнится ни разу.
Когда параметр цикла меняется в процессе работы программы, да ещё чтоб вылетала по ошибке в такой ситуации - программисты бы все дружно утопились. ![]() Последний раз редактировалось digitalis; 21.05.2021 в 17:11. |
![]() |
![]() |
![]() |
#8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
D7 в таком случае просто сообщил: "[Hint] Unit1.pas(30): FOR or WHILE loop executes zero times - deleted".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,710
|
![]()
Я бы не смог так хорошо выразиться, как D7
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Об использовании this в параметрах методов | hoz | Общие вопросы .NET | 10 | 13.12.2015 18:50 |
Ссылка в параметрах функции | Uefa | Помощь студентам | 2 | 30.10.2014 19:29 |
Объекты в параметрах функций | romantik2011 | PHP | 3 | 28.07.2011 21:07 |
О параметрах запуска и CreateProcess | Человек_Борща | Общие вопросы Delphi | 2 | 01.06.2011 10:01 |
ошибк в функции в параметрах.... | Chica Bond | Общие вопросы C/C++ | 5 | 02.05.2010 22:23 |