unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
   Osoba = packed record
   	nazwisko : String[25];
      imie     : String[15];
   end;

   Osoba2 = class
   public
   	nazwisko : String[25];
      imie     : String[15];
   end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    btnCLOSE: TBitBtn;
    btnSTART: TBitBtn;
    Memo: TMemo;
    procedure FormShow(Sender: TObject);
    procedure btnSTARTClick(Sender: TObject);
    procedure btnCLOSEClick(Sender: TObject);

  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnCLOSEClick(Sender: TObject);
begin
	Close();
end;

procedure TForm1.btnSTARTClick(Sender: TObject);
var
   txt     : String;
   lp      : Integer;
   ilEL    : Integer;
   Lista   : TList;
   pRec    : ^Osoba;

begin
   Memo.Clear();

   txt   := '';
   lp    := 0;
	ilEL  := 0;
   Lista := Nil;
   pRec  := Nil;

   // nowa lista
   Lista := TList.Create();

   New(pRec);
   // ob          := Osoba.Create();
   pRec.nazwisko := 'Kowalski';
   pRec.imie     := 'Adam';
   Lista.Add(pRec);

   New(pRec);
   pRec.nazwisko := 'Kowalska';
   pRec.imie     := 'Anna';
   Lista.Add(pRec);

   New(pRec);
   pRec.nazwisko := 'Kowalski';
   pRec.imie     := 'Piotr';
   Lista.Add(pRec);

   New(pRec);
   pRec.nazwisko := 'Kowalska';
   pRec.imie     := 'Dorota';
   Lista.Add(pRec);

   ilEL := Lista.Count-1;
   Memo.Clear();
   Memo.Lines.Add('Ilość elementów listy: ' + IntToStr(ilEL));

	// zawartośc listy na ekran
	for lp := 0 to ilEL do
   begin
   	pRec := Lista.Items[lp];
      txt := pRec.nazwisko + ' ' + pRec.imie;
      Memo.Lines.Add(txt);
   end;

	// usuwamy elementy listy
	for lp := 0 to ilEL do
   begin
   	pRec := Lista.Items[lp];
      Dispose(pRec);
   end;

	Lista.Clear();
   FreeAndNil(Lista);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   Memo.Align := alLeft;
   Memo.Clear();
end;

end.

