С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/64: Рейтинг темы: голосов - 64, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 20.01.2016
Сообщений: 32

Как работает переменная Result

07.10.2016, 15:44. Показов 12017. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!В дельфи я совершенный новичок, вот объясните мне как работает этот код, вернее скажите правильно ли я его понял.


Delphi
1
2
3
4
5
6
7
8
9
10
function Tetst: string;
var
  i, j, step_cnt: integer;
begin
     Result := '';
     i:=2;
     if i>=1 then
           Result := 'e';
 
end;
Как я это понял:
Result - это системная переменная возвращаемого значения, то есть когда написана она она возвращает значение.
Я перевожу из делфи в С++, и вот хочу понять как работает эта переменная.
Весь код не привожу так как 5 тысяч строк.
Собственно не пойму Result это аналог return?
Интересует вопрос, как только компилятор встречает Result происходит выход из функции и передача управления вызвавшему коду??Или все таки идет дальнейшее выполнение, мне не понятно зачем делают:
Delphi
1
Result := '';
Понятно что переменная result теперь содержит пустоту, на ведь она возвращает значение и получается выход из функции??или тут что-то другое происходит???
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2016, 15:44
Ответы с готовыми решениями:

Переменная Result
Всем привет! Вот мой вопрос: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Почему не отображается переменная $result?
Программа, высчитывающая расстояние между городами. <table border="1"> <tr> <th>City A</th><th>City B</th> ...

Понять что делает переменная result
Всем привет, подскажите плиз как так переменная result работает без описания в var, а если описываю то не пашет?! Оставить в стрoке S...

8
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
07.10.2016, 15:51
Цитата Сообщение от Mebiys Посмотреть сообщение
мне не понятно зачем делают:
функция должна что-то возвращать, если не поставить то компилятор напишет предупреждение
1
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
07.10.2016, 15:54
Цитата Сообщение от Mebiys Посмотреть сообщение
Собственно не пойму Result это аналог return?
Нет. Return это аналог комбинации
Delphi
1
2
Result:=...;
Exit;
Result же просто хранит возвращаемый результат, как будто ее объявили в var секции функции.
Это простая переменная, которая по выходу из подпрограммы по умолчанию считается результирующей.
1
0 / 0 / 0
Регистрация: 20.01.2016
Сообщений: 32
07.10.2016, 16:10  [ТС]
Hikari, получается все тело программы выполнится и вернется самый последний result?
Например если в функции их много???
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
07.10.2016, 16:11
Рассматривай Result как обычную переменную.
1
0 / 0 / 0
Регистрация: 20.01.2016
Сообщений: 32
07.10.2016, 16:33  [ТС]
northener, а если она в самом конце , то там уже ставить return???
0
 Аватар для MyEternity
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
07.10.2016, 16:52
Цитата Сообщение от Mebiys Посмотреть сообщение
Result := '';
Значение по умолчанию. Так заведено.
Функция выполняется до конца, если нету Exit;
Значение Result будет тем, которые было ему присвоено до Exit/Завершения функции.

Добавлено через 4 минуты
Вот еще пример.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
function SimpleByte: Byte;
var
  n: Byte;
begin
  Randomize;
  Result:=0; //По умолчани = 0.
  for n:=0 to 10 do
    begin
      Result:=Result+Random(3);
      if Result > 20 then Break; //По достижению результата - будет последнее значение Result;
    end;
end;
1
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
07.10.2016, 17:57
В Делфи нету Return в том виде, каков он в Си.
В старых Делфи его вообще нету:
Цитата Сообщение от Mebiys Посмотреть сообщение
и получается выход из функции?
Нет. Считайте что тут делается вот такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
... {
  var Result;
  ...
  Result = '';
  ...
  if (...) {
    ...
    Result = 'ololo';
  }
  ..
  return Result;
}
А команда Exit обозначает:
C++
1
  return Result;
И будет вернуто то, что было последним присвоено в Result.

Но в новых Делфи появилось:
Delphi
1
Exit(Value);
Что будет эквивалентно:
C++
1
  return Value;
1
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
07.10.2016, 19:02
Лучший ответ Сообщение было отмечено Mebiys как решение

Решение

Цитата Сообщение от Mebiys Посмотреть сообщение
получается все тело программы выполнится и вернется самый последний result?
Не самый последний, а тот, что окажется ближе к выходу из функции.
Delphi
1
2
3
4
5
6
function f(x:double):Douible;
begin
 if x<10 then Result:=13 else
 if x>10 then Result:=12 else
  Result:=0;
end;
При параметре равном 12 функция вернет 12 несмотря на то, что последний Result принимает ноль.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2016, 19:02
Помогаю со студенческими работами здесь

После выполнения (завершения) функции test переменная умрет, а что будет с переменной в Result?
class abc { public: int argc; char **argv; char **azColName; }; std::list&lt;abc&gt; Result;

переменная в Like как работает??
пользователь = &quot;ваымав&quot; If Доб Like &quot;*пользователь*&quot; как запихнуть в like переменную?? Спасибо

Не работает result в webmoney
Всем привет. Подключил wenmoney на сайт, все работает кроме result. При настройке, result проверку прошел, платёж выполняется успешно, а...

Use of undefined constant result - assumed 'result'
Здравствуйте! Создаю свой блог. И вот дело дошло до создания юзеров, а мне выдается ошибка Notice: Use of undefined constant result -...

не работает цикл php: while ($row = mssql_fetch_row($result))
не работает цикл. в чем может быть причина? $result=mssql_query(&quot;SELECT name FROM dbo.tab1 WHERE p1='1'); while ($row =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru