![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
Скажите , пишу первую функцию ,у меня возник вопрос.
Какой возвращаемый результат должен быть у функции если она ничего не возвращает |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Функция, которая ничего не возвращает называется процедура. procedure -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
northener, тоесть хотябы да или нет функция должна возвращать так чтоли?
Добавлено через 10 минут и 42 секунды Я имел ввиду корректно если функция сработала то она возвращает да в противном нет ,так? |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Ну, пиши result:=''
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Опять нужен учебник для начинающих. Функция должна возвращать хоть что-то ибо она может быть в правой части выражения. В отличии от функции процедура не должна что -либо возвращать. Это сообщение отредактировал(а) northener - 6.9.2012, 00:42 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: нет Всего: -9 |
northener, вобще если судить по примеру кода ,то везде где объявляется функция в конце пишется тип возвращаемых данных,но невсегда функция чео либо возвращает.
Вобще неплохо было бы об этом написать в книге. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Если функция вызывается - то она непременно что-то возвратит. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Вы неправы. Конкретный пример: Переменная Result типа string может иметь непустое начальное значение В Языке Си, например, нет разделения подпрограмм на функции и процедуры. Там всё - функции. Функция, не возвращающая значение, имеет тип void. В Паскале же подпрограммы чётко разделены на функции и процедуры. Если в Паскале подпрограмма не должна возвращать значение, она называется процедурой. Если подпрограмма названа функцией, она обязана что-то вернуть. Причём в любом случае. Если компилятор обнаруживает, что возможна ситуация, при которой переменной Result не будет ничего присвоено, он выдаёт предупреждение. Сразу привыкайте, что при компиляции программы не должно быть ни одного предупреждения, какими бы незначительными они вам ни казались. Вообще, пытаться что-либо писать с такими знаниями - пустая трата времени. Прочитайте какую-нибудь книжку для начинающих, чтобы знать хотя бы самые минимальные основы. Посоветовать что-то конкретное я не могу, но по содержанию можно ориентироваться, например, на эту книгу: "Delphi XE2" Осипов Д. Вас должны интересовать главы до 28. Ваш нынешний вопрос относится к страницам 53 и 55. |
|||
|
||||
lomaster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 27.5.2012 Репутация: нет Всего: 2 |
Чтобы функция не возвращала результат, возбудите исключение, но и ловить не забудте.
Если логика кода может или не может возвращать, то тут надо смотреть на суть. От этого зависит что применить функцию или процедуру. |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Кстати, для начала можно почитать этот цикл статей:
Учебное пособие по программированию на языке Delphi Написано всё это достаточно давно, поэтому там нет многих нововведений, в частности, ничего не говорится о вопросах, связанных с поддержкой Юникода, но познакомиться с самыми азами - вполне. Это сообщение отредактировал(а) БелАмор - 15.9.2012, 17:44 |
|||
|
||||
Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Вы не умеете читать
Ваше
Мое Есть принципиальные отличия? Особенно если мы говорим про такой нестандартный в практике вопрос. Добавлено через 2 минуты и 12 секунд
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
компилятор гарантирует только корректность работы с автоматическими типами То что ты говоришь что это не всегда, выглядит как-то странно, потому что такое поведение скорее случайность -------------------- Обижено школьников: 8 |
|||
|
||||
БелАмор |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Я привёл пример для того, чтобы показать, что есть как минимум одно исключение. А если есть одно исключение, то общее правило перестаёт быть общим. Поэтому, независимо от того, что там реально возвращает функция при неприсвоенном результате, всегда следует считать, что она возвращает мусор.
Прошу извинить меня за занудство, но лично для меня разница между "не стоит" и "категорически нельзя" является принципиальной. Дело не только в том, что нужно, чтобы было понятно, что функция безрезультатна. Нужно ещё: 1. Исключить в принципе потенциальную возможность где-то потом нарваться на мусор в результате. 2. Убрать предупреждение компилятора, которое захлямляет окно сообщений. При большом количестве предупреждений смысл предупреждений практически теряется, поскольку обнаружить одно новое сообщение среди десятков других становится практически нереально, и уже нет никакой разницы включены у вас предупреждения, или отключены совсем. Про юникодные версии я пока воздержусь высказывать мнение, но на неюникодных до сих пор удавалось придерживаться правила "ни одного предупреждения при компиляции". Поставить else в том-же case, даже если других вариантов тут не может быть, меня пока не особо напрягало. А предупреждения иногда указывают на действительно серьёзные упущения. И было бы хорошо не потерять такие предупреждения в горах мусора. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |