Lazarus Pascal Keywords and Examples

Program Structure

Program

program HelloWorld;
begin
  Writeln('Hello, World!');
end.

Uses

uses
  SysUtils;
begin
  Writeln(FormatDateTime('yyyy-mm-dd', Now));
end.

Unit

unit MyUnit;

interface
procedure SayHello;

implementation
procedure SayHello;
begin
  Writeln('Hello from MyUnit!');
end;

end.

Data Types

Standard Types

Integer

var
  x: Integer;
begin
  x := 42;
  Writeln(x);
end.

Real = type Double

var
  y: Real;
begin
  y := 3.14;
  Writeln(y);
end.

Char

var
  ch: Char;
begin
  ch := 'A';
  Writeln(ch);
end.

String

var
  str: String;
begin
  str := 'Hello, Lazarus!';
  Writeln(str);
end.

Advanced Types

Boolean

var
  b: Boolean;
begin
  b := True;
  Writeln(b);
end.

Byte

var
  b: Byte;
begin
  b := 255;
  Writeln(b);
end.

Word

var
  w: Word;
begin
  w := 65535;
  Writeln(w);
end.

Cardinal

var
  c: Cardinal;
begin
  c := 4294967295;
  Writeln(c);
end.

SmallInt

var
  si: SmallInt;
begin
  si := -32768;
  Writeln(si);
end.

LongInt

var
  li: LongInt;
begin
  li := 2147483647;
  Writeln(li);
end.

Int64

var
  i64: Int64;
begin
  i64 := 9223372036854775807;
  Writeln(i64);
end.

Single

var
  s: Single;
begin
  s := 1.5E-4;
  Writeln(s);
end.

Double

var
  d: Double;
begin
  d := 3.14159;
  Writeln(d);
end.

Extended

var
  e: Extended;
begin
  e := 1.23456789E+4000;
  Writeln(e);
end.

Comp

var
  compVar: Comp;
begin
  compVar := 123456789.123456789;
  Writeln(compVar);
end.

Currency

var
  cur: Currency;
begin
  cur := 19.99;
  Writeln(cur);
end.

Set

type
  TDays = set of (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
var
  WorkDays: TDays;
begin
  WorkDays := [Mon, Tue, Wed, Thu, Fri];
  if Mon in WorkDays then
    Writeln('Monday is a workday.');
end.

Record

type
  TPoint = record
    X, Y: Integer;
  end;
var
  p: TPoint;
begin
  p.X := 10;
  p.Y := 20;
  Writeln('X: ', p.X, ', Y: ', p.Y);
end.

Array

var
  arr: array[1..5] of Integer;
begin
  arr[1] := 10;
  arr[2] := 20;
  Writeln(arr[1], ', ', arr[2]);
end.

Pointer

var
  p: ^Integer;
begin
  New(p);
  p^ := 42;
  Writeln(p^);
  Dispose(p);
end.

Variant

var
  v: Variant;
begin
  v := 123;
  Writeln(v);
  v := 'Hello';
  Writeln(v);
end.

Control Structures

If, Then, Else

var
  x: Integer;
begin
  x := 10;
  if x > 5 then
    Writeln('x is greater than 5')
  else
    Writeln('x is 5 or less');
end.

Case

var
  ch: Char;
begin
  ch := 'A';
  case ch of
    'A': Writeln('It''s A');
    'B': Writeln('It''s B');
  else
    Writeln('Unknown');
  end;
end.

For Loop

var
  i: Integer;
begin
  for i := 1 to 5 do
    Writeln(i);
end.

While Loop

var
  x: Integer;
begin
  x := 0;
  while x < 5 do
  begin
    Inc(x);
    Writeln(x);
  end;
end.

Repeat, Until

var
  x: Integer;
begin
  x := 0;
  repeat
    Inc(x);
    Writeln(x);
  until x = 5;
end.

Procedures and Functions

Procedure

procedure SayHello;
begin
  Writeln('Hello!');
end;

begin
  SayHello;
end.

Function

function Add(a, b: Integer): Integer;
begin
  Result := a + b;
end;

begin
  Writeln(Add(10, 20));
end.

OOP Keywords

Class

type
  TPerson = class
    Name: String;
    procedure Greet;
  end;

procedure TPerson.Greet;
begin
  Writeln('Hello, ', Name);
end;

var
  p: TPerson;
begin
  p := TPerson.Create;
  p.Name := 'Lazarus';
  p.Greet;
  p.Free;
end.

Constructor, Destructor

type
  TMyClass = class
    constructor Create;
    destructor Destroy; override;
  end;

constructor TMyClass.Create;
begin
  Writeln('Created');
end;

destructor TMyClass.Destroy;
begin
  Writeln('Destroyed');
  inherited Destroy;
end;

var
  obj: TMyClass;
begin
  obj := TMyClass.Create;
  obj.Free;
end.

Memory Management

New, Dispose

type
  PInt = ^Integer;
var
  p: PInt;
begin
  New(p);
  p^ := 42;
  Writeln(p^);
  Dispose(p);
end.

Miscellaneous

With

type
  TPoint = record
    X, Y: Integer;
  end;

var
  p: TPoint;
begin
  p.X := 10;
  p.Y := 20;
  with p do
    Writeln('X: ', X, ', Y: ', Y);
end.

Goto

label
  MyLabel;
var
  x: Integer;
begin
  x := 0;
  MyLabel:
    Writeln(x);
    Inc(x);
    if x < 5 then
      goto MyLabel;
end.

Try, Except

begin
  try
    Writeln(10 div 0);
  except
    on E: Exception do
      Writeln('Error: ', E.Message);
  end;
end.

Try, Finally

var
  f: TextFile;
begin
  AssignFile(f, 'example.txt');
  try
    Rewrite(f);
    Writeln(f, 'Hello, Lazarus!');
  finally
    CloseFile(f);
  end;
end.
Flag Counter