Как я могу использовать переменную, используемую в другом модуле в другом методе? - PullRequest
0 голосов
/ 22 января 2020

У меня есть метод, который требует локальной переменной, обработанной в другом модуле, но я не знаю, как правильно ссылаться на нее. В зависимости от результата условия if полученная переменная изменяется.

function Connecting.SendSomething(Var1 : Boolean;Var2 : boolean) : integer;
begin
  Result := 0;
  if 2+2 = 4 then
    Result := 1
  else
    Result := 2;
  ...
end;

Result упоминается только там. Нигде в коде модуля он не использовался, поэтому я предполагаю, что это целочисленная переменная. Дело в том, что я хочу использовать Result в условном выражении if в методе другой единицы.

Пожалуйста, имейте в виду, что вторичная единица правильно включена сверху, имена переменных были изменил, чтобы поместить их здесь, и код упрощен, чтобы опустить конфиденциальные данные.

Там я использую Connecting.SendSomething() внутри метода кнопки basi c со значениями (TRUE, TRUE) и (TRUE, FALSE) в качестве параметров Я просто не знаю, как "намотать" Result.

1 Ответ

0 голосов
/ 23 января 2020

Result относится к integer, которое SendSomething() возвращает:

Процедуры и функции (Delphi): объявления функций

Блок операторов функции регулируется теми же правилами, которые применяются к процедурам. Внутри блока операторов можно использовать переменные и другие идентификаторы, объявленные в части localDeclarations функции, имена параметров из списка параметров и любые идентификаторы, в область которых входит объявление функции. Кроме того, само имя функции действует как специальная переменная, которая содержит возвращаемое значение функции, так же, как и предопределенная переменная Result.

До тех пор, пока включен расширенный синтаксис ( {$X+}), Result неявно объявляется в каждой функции. Не пытайтесь переопределить его.

Таким образом, только SendSomething() и его непосредственный абонент могут получить доступ к значению Result, например,

if Connecting.SendSomething(true, true) = 1 then

Если SendSomething() явно не передает свой Result в качестве параметра другой процедуре / функции, например:

function Connecting.SendSomething(Var1 : Boolean;Var2 : boolean) : integer;
begin
  Result := 0;
  if 2+2 = 4 then
    Result := 1
  else
    Result := 2;
  ...
  DoSomethingWith(Result);
  ...
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...