Devised by Niklaus Wirth in the late 1960s and early 1970s, Pascal is a programming language. Originally produced by Borland Software Corporation, Embarcadero Delphi is composed of an IDE, set of standard libraries, and a Pascal-based language commonly called either Object Pascal, Delphi Pascal, or simply 'Delphi' (Embarcadero's current documentation refers to it as 'the Delphi language (Object Pascal)'). Since first released, it has become the most popular commercial Pascal implementation. While developing Pascal, Wirth employed a bootstrapping procedure in which each newer version of the Pascal compiler was written and compiled with its predecessor. Thus, the 'P2' compiler was written in the dialect compilable by 'P1', 'P3' in turn was written in 'P2' and so on, all the way till 'P5'. The 'P5' compiler implemented Pascal in its final state as defined by Wirth, and subsequently became standardised as 'ISO 7185 Pascal'. The Borland dialect, like the popular UCSD Pascal before it, took the 'P4' version of the language as its basis, rather than Wirth's final revision. After much evolution independent of Standard Pascal, the Borland variant became the basis for Delphi. This page goes over the differences between Delphi and Standard Pascal. It does not go into Delphi-specific extensions to the language, which are numerous and still increasing. Differences between Standard Pascal and Delphi 1. The way procedures and functions can be passed as parameters differs: Delphi requires explicit procedural types to be declared where Standard Pascal does not. 2. Delphi does not support so called 'extraprocedural gotos', in which goto statements may reference targets outside the current procedure/function body. 3. Standard Pascal has file 'buffer variables', together with 'get' and 'put' standard procedures that operate on them. Neither are supported in Delphi. 4. Given a variant record in Standard Pascal, the size of a particular variant can be specified. Delphi does not support this form of 'sized' dynamic variable allocation: new(p, t) //where t is a variant record tag type; does not compile in Delphi 5. The functions 'pack' and 'unpack' are not implemented in Delphi. 6. The Delphi compiler does not treat { and (*, } and *) as synonyms like Standard Pascal requires. In other words, { comment *) is not valid in Delphi. Instead, Delphi uses the scheme of allowing the different comment types to indicate nested comments. 7. Delphi does not replace eoln with space as the Pascal standard requires. When reading through