将变量传递给不同单位的功能

时间:2018-05-04 02:35:54

标签: variables pascal procedure

我是pascal的新手,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 :(得分:1)

这很简单:如果你想让你的函数有参数,请声明它们。任何编程教科书,对于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,这就是函数内部的知识(或者,如程序员所说:在函数的范围中)。

FWIW,网上有非常好的Pascal教科书。看看例如MarcoCantù的在线书籍Essential Pascal