Típusnélküli mutató - példaprogram

program KepMent;
uses Crt, Graph;
var f: file;          {A típusnélküli állomány, amelybe mentjük a képet}
    kep: pointer;     {A kép memóriába való elmentéséhez szükséges mutató}
    d, m: integer;
    meret: word;
    grd, grm, a, b, c, px, py, py1, i: integer;
    x, y: real;
begin
  {Grafika kirajzolása (két függvény ábrázolása)}
  d := detect;
  InitGraph(d, m, 'c:\bp\bgi');
  a := 1;
  b := -2;
  c := -3;
  for i := 0 to 640 do PutPixel(i,240,14);
  for i := 0 to 64 do begin PutPixel(10*i,241,14); PutPixel(10*i,239,14) end;
  for i := 0 to 480 do PutPixel(320,i,14);
  for i := 0 to 48 do begin PutPixel(319,10*i,14); PutPixel(321,10*i,14) end;
  for i := -320 to 320 do
    begin
      x := i/10;
      y := 5*Sin(x/4);
      px := Round(10*x + 320);
      py := Round(-10*y + 240);
      py1 := Round(-10*x + 240);
      if (py < 480) and (py > 0) then PutPixel(px,py,15);
      if (py1 < 480) and (py1 > 0) then PutPixel(px,py1,15)
    end;

  Assign(f, 'kepment.dat');
  Rewrite(f);
  {A képet négy részletben tudjuk elmenteni}
  meret := ImageSize(0, 0, 319, 239); {A negyedkép mérete}
  GetMem(kep, meret);                 {Helyfoglalás a típusnélküli mutatónak a heap-ben}
  GetImage(0, 0, 319, 239, kep^);     {Negyedkép elmentése a mutatott területre}
  BlockWrite(f, kep^, meret div 128); {A memóriaterület elmentése a fájlba}
  GetImage(320, 0, 639, 239, kep^);
  BlockWrite(f, kep^, meret div 128);
  GetImage(0, 240, 319, 479, kep^);
  BlockWrite(f, kep^, meret div 128);
  GetImage(320, 240, 639, 479, kep^);
  BlockWrite(f, kep^, meret div 128);
  FreeMem(kep, meret);                {A memóriaterület felszabadítása}

  {A kép visszaolvasása}
  ReadKey;
  ClearDevice;
  ReadKey;
  Reset(f);
  GetMem(kep, meret);                 {Helyfoglalás a típusnélküli mutatónak a heap-ben}
  BlockRead(f, kep^, meret div 128);  {Adatmozgatás a fájlból a lefoglalt memóriaterületre}
  PutImage(0, 0, kep^, copyput);      {A negyedkép kirajzolása}
  BlockRead(f, kep^, meret div 128);
  PutImage(320, 0, kep^, copyput);
  BlockRead(f, kep^, meret div 128);
  PutImage(0, 240, kep^, copyput);
  BlockRead(f, kep^, meret div 128);
  PutImage(320, 240, kep^, copyput);
  FreeMem(kep, meret);                {A memóriaterület felszabadítása}

  ReadKey;
end.