Skip to content

Strange Types Circulating (in code)

At this point you should be able to understand almost all of the following code:

unit UnitMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
  StdCtrls, TypInfo;

//Constants
Const
  MAX_PLAYERS = 10;

type

  { TFormMain }

  TFormMain = class(TForm)
    ButtonStart: TButton;
    Memo: TMemo;
    procedure ButtonStartClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  FormMain: TFormMain;
  GlobalInteger : integer; //A global Variable declaration

implementation

{$R *.lfm}

{ TFormMain }

procedure DuplicateProcedure(v:integer);
var LocalResult:integer; //Local variable
begin
  v:=2*v; //Local variable scope !
  LocalResult:=v;
  FormMain.Memo.Lines.Add('The procedure tells : The local result is :'
  + inttostr(LocalResult));
end;

function DuplicateFunction(v:integer):integer; //response
var LocalResult:integer; //Local variable
begin
  v:=2*v; //Local variable scope !
  LocalResult:=v;
  result := LocalResult;
end;

procedure DuplicateProcedureGlobalVariable();
begin
  GlobalInteger:=2*GlobalInteger;;
  FormMain.Memo.Lines.Add('The procedure tells : The local result is :'
  + inttostr(GlobalInteger));
end;

/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
//MAIN PROGRAM

procedure TFormMain.ButtonStartClick(Sender: TObject);
var LocalInteger : integer;  //Local variables declarations
    S1,S2 : string;
    i : integer;
    Players : array [1..9] of string; //Static array
    UnlimitedPlayers : array of string; //Dynamic array

begin

  //Comments/////////////////////////////////////////////////////////
  //Comment single line

  {
    Comment
    Multi line ...
  }

  //Constants!!!! ///////////////////////////////////////////////////
  MAX_PLAYERS := 11;

  //procedure call
  DuplicateProcedure(11.4);

  //function call
  DuplicateFunction(MAX_PLAYERS);
end;

// Unit ending requires final pediod.
end.

Code will fall into error, to be honest the compiler will face two errors.

Before compiling and looking at Messages window to know them, try to catch them.

First must be immediate, second a bit less because we explained the reason not directly in the last few writing of previous page.

Try it yourself, and then compile.

Your new app will show the button, by clicking which you'll see a result in Memo.

This will be treated in next article, together with other stuff.

Have fun!