Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2021, 12:39   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию Функция без значения

Есть ли возможность сделать так, чтобы (при каком-то исходе алгоритма) функция не возвращала никакого значения и переменная, которую приравнивают к функции сохранила прежнее значение?
Kronos913 вне форума Ответить с цитированием
Старый 06.05.2021, 14:34   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Да можно структура передается по ссылке. Но это капкан расставленный на медведя, он рано или поздно цапнет хозяина. Короче так делать не надо. Так как тот кто будет пользоваться вашей функции даже догадываться не будет. И сами вы через полгода забудете.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.05.2021, 14:56   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Я не понял, о какой структуре речь - в вопросе её не было.
А, понял
Код:
TMyRecord = record
...........................
function plus(arg:integer):TMyRecord;
Мой ответ - не нужно.
Вот:
Код:
function plus(arg:integer):integer;
begin
   if arg>0 then Result := arg +1
end;
Казалось бы: при отриц. аргументе в функции ничего не делается, просто выход. Но компилятор об этом ничего не знает, и программа после выхода из функции забирает, как всегда, из "условленного места" результат, который в данном случае не определён, и заносит его в переменную левой части оператора присвоеаивания. Компилится нормально, результат - бред сивой кобылы.
Вывод: не нужно искать хитрожолтенькие решения, а программировать чётко по правилам языка. В данном примере - использовать не функцию, а процедуру.
Код:
procedure plus(arg:integer; var res:integer);
begin
   if arg>0 then res := arg +1
end;

Последний раз редактировалось digitalis; 06.05.2021 в 19:17.
digitalis вне форума Ответить с цитированием
Старый 07.05.2021, 03:08   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Вывод: не нужно искать хитрожолтенькие решения, а программировать чётко по правилам языка. В данном примере - использовать не функцию, а процедуру.
+100500
northener вне форума Ответить с цитированием
Старый 07.05.2021, 15:41   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 951
По умолчанию

digitalis, вау, на паскале тоже можно прострелить колено ))
Алексей1153 вне форума Ответить с цитированием
Старый 08.05.2021, 02:27   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
digitalis, вау, на паскале тоже можно прострелить колено ))
Нельзя. Компилятор в данном случае предупредит, что результат функции может быть не определен.
northener вне форума Ответить с цитированием
Старый 08.05.2021, 11:14   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
"Нет такого языка программирования, на котором упорный программист не смог бы написать ахунею"
© я
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция возвращения значения. Ossuary Помощь студентам 1 02.06.2017 11:19
Функция без указанного типа cossack5 Общие вопросы C/C++ 3 16.01.2014 09:34
Функция не возвращает значения 2.0 Winlook PHP 1 10.05.2010 00:58
Функция средневзвешенного значения Иванов_ДМ Microsoft Office Excel 6 18.08.2009 16:19