将变量传递给不同单元中的函数

Passing variable to function in different unit

我是 pascal 的新手,两天前从零开始,所以如果有人可以提供解决方案,我可以分析它并 learn/understand 它是如何完成的。

基本上我想做的是:

我有两个文件 "Start.pas" 和 "ReusableFunctions.pas"。 它们都位于同一个文件夹中。

在 Start.pas 中,我调用了位于 ReusableFunctions.pas

中的过程 "FunctionOne();"

我想将 Start.pas 中的变量 "ToTake" 传递给 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.

这很简单:如果你想让你的函数有参数,声明它们。任何针对 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,网上有非常好的 Pascal 教科书。看看例如Marco Cantù 的在线图书 Essential Pascal.