Need Help on Object Pascal code

I am trying to learn Delphi (which uses Object Pascal) and I am trying
to do the following code:

The problem is NOT that it doesn't compile -- it does.
The problem is that MyBook and MyMagazine show nil meaning that they
are not really there. So when I do the first statement in TBook.Change
my program blows up.

Can anyone tell me why???

Thanks in advance.  (Please email me on this!!)
-------------------- code starts here ------------------------------

program Object1;

uses WinCrt;

type TBinding = (Hard, Soft);
type TLiterature = (Fiction, NonFiction);
type TCategory = (SciFi, Western, Romance, War, Action);
type TMagType = (News, Hobby, Entertainment);

type TPublish = class
  Name: String;
  noPages: Integer;
  BindingType: TBinding;
  Cover: Boolean;
end;

type TBook = class(TPublish)
  LiteratureType: TLiterature;
  CategoryType: TCategory;
  procedure Change(N: String; P: Integer; B: TBinding; C: Boolean;
                   L: TLiterature; Cat: TCategory);
end;

type TMagazine = class(TPublish)
  MagazineType: TMagType;
  procedure Change(N: String; P: Integer; B: TBinding; C: Boolean; M:
TMagType);
end;

procedure TBook.Change(N: String; P: Integer; B: TBinding; C: Boolean;
                       L: TLiterature; Cat: TCategory);
begin
  Name := N;
  noPages := P;
  BindingType := B;
  Cover := C;
  LiteratureType := L;
  CategoryType := Cat;
end;

procedure TMagazine.Change(N: String; P: Integer; B: TBinding; C:
Boolean;
                           M: TMagType);
begin
  Name := N;
  noPages := P;
  BindingType := B;
  Cover := C;
  MagazineType := M;
end;

var
  MyBook: TBook;
  MyMagazine: TMagazine;

begin

  MyBook.Change('The Cowboy Rode West', 276, Hard, True, Fiction,
Western);
  MyMagazine.Change('NewsDay', 40, Soft, True, News);

end.