Передача переменной в функцию в другом блоке - PullRequest
0 голосов
/ 04 мая 2018

Я совершенно новичок в паскале, начал с нуля 2 дня назад, поэтому, если кто-то сможет предоставить решение, я смогу проанализировать его и узнать / понять, как оно сделано.

В основном то, что я пытаюсь сделать:

У меня есть два файла с именем «Start.pas» и «ReusableFunctions.pas». Они оба находятся в одной папке.

В Start.pas я вызываю процедуру «FunctionOne ();» который находится в ReusableFunctions.pas

Я хочу передать переменную «ToTake» из Start.pas этой процедуре в ReusableFunctions.pas, чтобы процедура выводила правильный ответ.

Проблема в том, что я не знаю, как передать переменную, потратить 5 часов на поиски того или другого, не могу заставить его работать. Чувствую себя таким глупым и сонным ...

Код моего файла Start.pas:

USES
SysUtils, Classes, ReusableFunctions;

VAR 
ToTake: integer = 1; 

BEGIN
FunctionOne();
END.

Мой код ReusableFunctions.pas:

UNIT  ReusableFunctions;

INTERFACE

USES
    SysUtils, Classes;


PROCEDURE 
    FunctionOne();


IMPLEMENTATION 

    procedure FunctionOne();
    begin
            begin
                case ToTake of
                1: Print('A');
                2: Print('B');
                3: Print('C');
                4: Print('D');
                5: Print('E');
                else Print('ERROR');
            end;
    end;

END.

1 Ответ

0 голосов
/ 04 мая 2018

Все довольно просто: если вы хотите, чтобы у вашей функции были параметры, объявите их. Любой учебник по программированию для Pascal или большинства других языков научит вас параметрам (или аргументам, как их называют в некоторых других языках). Они имеют решающее значение для процесса программирования.

В модуле ReusableFunctions, объявить:

procedure FunctionOne(Decision: Integer);

implementation

procedure FunctionOne(Decision: Integer);
begin
  case Decision of
    1: Print('A');
    2: Print('B');
    3: Print('C');
    4: Print('D');
    5: Print('E');
  else 
    Print('ERROR');
  end;
end;

Теперь вы можете вызывать его из основной программы, например:

FunctionOne(ToTake);

Обратите внимание, что имя параметра не обязательно должно совпадать с переменной или значением, переданным ему. Я назвал параметр Decision, и именно так он известен внутри функции (или, как сказал бы программист: в scope функции).

FWIW, в Интернете есть очень хорошие учебники по Паскалю. Взгляните, например, на Электронная книга Марко Канту Essential Pascal .

...