|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.05.2021, 21:45 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
TStrings в параметрах
Вопрос такой:
Если в параметрах процедуры есть переменная TStrings, и перед ней не прописано ни var ни const, то она в таком случае копируется, или работает по ссылке как в случае с var ? |
20.05.2021, 22:06 | #2 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Вот такой код.
В этом случае идет напрямую обращение, как в случае с var? Код:
|
21.05.2021, 04:36 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Если верно понял ассемблер, то по ссылке (по адресу на объект). А по поводу остального кода: зачем игнорировать существование break (будет безусловный выход из цикла, а не лишняя проверка условия цикла); при известном количестве итераций лучше использовать цикл for (заодно свойство count не будет "дергаться" на каждой итерации цикла).
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
21.05.2021, 11:04 | #4 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Цитата:
Если ввести в параметр st единицу (чтобы фильтр не трогал нулевую строку), в TString'се на данный момент только нулевая строка, получится так: st = 1, (ss.Count - 1) = 0 И в этом случае for должен выдать ошибку По поводу остальных правок - большое спасибо |
|
21.05.2021, 11:21 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Да не ошибку - просто цикл не выполнится ни разу. На этапе компиляции компилятор не знает, что там в st и ss.Count . Если бы задавались константы
Код:
Последний раз редактировалось digitalis; 21.05.2021 в 11:26. |
21.05.2021, 15:43 | #6 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Я имел в виду: в процессе работы программа в процессе не выдаст ошибку, если в цикле for нижняя граница больше верхней?
|
21.05.2021, 17:09 | #7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Нет, просто цикл не выполнится ни разу.
Когда параметр цикла меняется в процессе работы программы, да ещё чтоб вылетала по ошибке в такой ситуации - программисты бы все дружно утопились. Последний раз редактировалось digitalis; 21.05.2021 в 17:11. |
21.05.2021, 20:43 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
D7 в таком случае просто сообщил: "[Hint] Unit1.pas(30): FOR or WHILE loop executes zero times - deleted".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
21.05.2021, 22:43 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Я бы не смог так хорошо выразиться, как 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 |