Object Pascal

在Apple的早期历史

Object Pascal是对Pascal语言的扩展，它是Apple Computer的一个由拉里·泰斯勒领导，Pascal的发明者尼克劳斯·维尔特提供咨询的小组开发的。它继承自一个用于Lisa计算机的称作Clascal的Pascal的面向对象的早期版本。
为了支持一个现在叫做类库的可扩展Macintosh应用框架MacApp，Object Pascal是必要的。Object Pascal扩展和MacApp本身是由Barry Haynes，Ken Doyle和Larry Rosenstein开发的，Dan Allen测试的。拉里·泰斯勒监督该项目，开始于1985年早期，在1986年成为一个产品。
Apple在1994年从Motorola 68K芯片转移到IBM's PowerPC架构时，删除了对Object Pascal的支持。
一个Object Pascal扩展也在Think Pascal IDE里实现过。该IDE包括编译器，一个语法高亮和检查的编辑器，一个强大的调试器和一个类库。许多开发者首选Think Pascal，而不是MacApp，因为它提供了工具的紧密集成。在4.01之后，开发停止了，因为Symantec购买了该公司。开发人员然后离开了该项目。

Borland和CodeGear的年代

在1986年，Borland将也称作Object Pascal的类似扩展引进到Macintosh的Turbo Pascal产品里；在1989年，引进到DOS的Turbo Pascal 5.5。
当Borland在1994年将重点从MS-DOS调整到Windows时，它们创造了Turbo Pascal的一个叫做Delphi的继任者，并引进了创建现在称作Delphi语言的一系列新的扩展。
Delphi的开发开始于1993年，1995年2月14日在美国官方发布了Delphi 1.0。那时，使用Turbo Pascal对象模型的代码仍旧能被编译，Delphi的特性有：先于object使用关键字class的新语法，Create构建器和虚拟的Destroy析构器（并否定了必须调用New和Dispose过程），属性，方法指针和一些其它特性。这些是ISO面向对象扩展工作草案所鼓励的，但是许多与Turbo Pascal方言的差异（例如草案要求所有的方法是虚拟的）被忽略了。
Delphi语言在遍及支持诸如64位整数和动态数组的新语言概念的年代里继续演化。

解释器

Pascal Script（正式地称作InnerFuse）是一个开源的用Delphi编写的Object Pascal 解释器/脚本引擎。支持有限的Object Pascal子集。

Apple的Object Pascal

program ObjectPascalExample;

   type
      THelloWorld = object
         procedure Put;
      end;

   var
      HelloWorld: THelloWorld;

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;begin
   New(HelloWorld);
   HelloWorld.Put;
   Dispose(HelloWorld);end.

Turbo Pascal的Object Pascal

在Delphi和Free Pascal里仍然支持这种Object Pascal。FPC也将自己的（这种Object Pascal）库/单元的替代品打包。Delphi不这样做。Free Pascal 1.0系列和FPC文本模式IDE是这种方言的最大的开发代码库。Free Pascal 2.0以更类似Delphi的方言重写了。
program ObjectPascalExample;

   type
      PHelloWorld = ^THelloWorld;
      THelloWorld = object
         procedure Put;
      end;

   var
      HelloWorld: PHelloWorld; {这是一个指向THelloWorld的指针}

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;begin
   New(HelloWorld);
   HelloWorld^.Put;
   Dispose(HelloWorld);end.

Delphi和Free Pascal的Object Pascal

program ObjectPascalExample;type
  THelloWorld = class
    procedure Put;
  end;procedure THelloWorld.Put;begin
  Writeln('Hello, World!');end;var
  HelloWorld: THelloWorld;               {这是一个隐式指针}begin
  HelloWorld := THelloWorld.Create;      {构建器返回一个指针}
  HelloWorld.Put;
  HelloWorld.Free;                       {本行解除引用指针}end.
注意，对象构建器在Delphi和Free Pascal（Delphi兼容模式）里仍然有效。

Oxygene的Object Pascal

namespace ObjectPascalExample;

   interface

   type
      ConsoleApp = class
         class method Main
      end;

      THelloWorld = class
         method Put;
      end;

   implementation

   method THelloWorld.Put;
   begin
      Console.WriteLine('Hello, World!');
   end;

   class method ConsoleApp.Main;
   begin
      var HelloWorld := new THelloWorld;
      HelloWorld.Put;
   end;end.

进展

通过扩展Delphi，许多特性已持续地引进Object Pascal，现在Free Pascal也引进了一些特性。为了应对批评，Free Pascal已接纳了泛型，并且Delphi和Free Pascal现在都支持操作符重载（尽管使用不同的语法）。Delphi从版本7也引进了包括泛型的许多其它特性。