付録 (標準 Pascal 範囲内での Delphi 入門)

# 付録

## 定義済み識別子 (標準名)

### 定数

|定数|値|
|:---:|:---|
|[False](http://docwiki.embarcadero.com/Libraries/ja/System.Boolean)|0|
|MaxInt|(環境依存)|
|[True](http://docwiki.embarcadero.com/Libraries/ja/System.Boolean)|1|

※ 特殊な定数 **nil** もあります。

Delphi にはこの他にも様々な定数が定義されています。

 - [定義済み定数 (Docwiki)](http://docwiki.embarcadero.com/Libraries/ja/System#.E5.AE.9A.E6.95.B0)

### 変数

|変数|型|説明|
|:---:|:---:|:---:|
|[Input](http://docwiki.embarcadero.com/Libraries/ja/System.Input)|テキストファイル|標準入力|
|[Output](http://docwiki.embarcadero.com/Libraries/ja/System.Output)|テキストファイル|標準出力|

Delphi にはこの他にも様々な変数が定義されています。

 - [定義済み変数 (Docwiki)](http://docwiki.embarcadero.com/Libraries/ja/System#.E5.A4.89.E6.95.B0)

### 型

|型|説明|
|:---:|:---:|
|[Boolean](http://docwiki.embarcadero.com/Libraries/ja/System.Boolean)|論理型|
|[Char](http://docwiki.embarcadero.com/Libraries/ja/System.Char)|文字型|
|[Integer](http://docwiki.embarcadero.com/Libraries/ja/System.Integer)|整数型|
|[Real](http://docwiki.embarcadero.com/Libraries/ja/System.Real)|実数型|
|[Text](http://docwiki.embarcadero.com/Libraries/ja/System.Text)|ファイル型|


Delphi にはこの他にも様々な型が定義されています。

 - [定義済み型 (Docwiki)](http://docwiki.embarcadero.com/Libraries/ja/System#.E5.9E.8B)

### 標準手続きと標準関数

標準 Pascal の標準手続きと標準関数は、それぞれ次のように呼ばれる事があります。

 - 宣言済み手続き / 宣言済み関数
 - 定義済み手続き / 定義済み関数

つまりは最初から使えるルーチンの事です。Delphi だと `組み込みルーチン` が標準手続き/標準関数に相当します。

#### 標準手続き (Required procedures)

##### ファイル処理手続き (File handling procedures)

|手続き|説明|Turbo|UCSD|
|:---|:---|:--:|:--:|
|Get()|ファイルを次の要素まで進め、<br>その値をバッファ変数 F^ に格納する。<br>要素が存在しなければ [Eof()](http://docwiki.embarcadero.com/Libraries/ja/System.Eof) は **True** になり<br>F^ は不定となる。||〇|
|Page()|ページ送りを行う。||〇|
|Put()|ファイル F にバッファ変数 F^ の値を追加する。<br>実行後は [Eof()](http://docwiki.embarcadero.com/Libraries/ja/System.Eof) は **True** になり F^ は不定となる。||〇|
|[Read()](http://docwiki.embarcadero.com/Libraries/ja/System.Read)|ファイルからデータを読み込む。|〇|〇|
|[Readln()](http://docwiki.embarcadero.com/Libraries/ja/System.Readln)|ファイルからテキストを 1 行読み込む。|〇|〇|
|[Reset()](http://docwiki.embarcadero.com/Libraries/ja/System.Reset)|ファイル F を先頭に位置付け、<br>F が空でなければ F の最初の要素が<br>F^ に代入され、[Eof()](http://docwiki.embarcadero.com/Libraries/ja/System.Eof) は **False** を返す。|〇|〇|
|[Rewrite()](http://docwiki.embarcadero.com/Libraries/ja/System.Rewrite)|ファイル F を生成する。<br>F は空になり、[Eof()](http://docwiki.embarcadero.com/Libraries/ja/System.Eof) は **True** を返す。|〇|〇|
|[Write()](http://docwiki.embarcadero.com/Libraries/ja/System.Write)|ファイルにデータを書き込む。|〇|〇|
|[Writeln()](http://docwiki.embarcadero.com/Libraries/ja/System.Writeln)|ファイルにテキストを 1 行書き出す。|〇|〇|

##### 動的割付け手続き (Dynamic allocation procedures)

|手続き|説明|Turbo|UCSD|
|:---|:---|:--:|:--:|
|[Dispose()](http://docwiki.embarcadero.com/Libraries/ja/System.Dispose)|動的変数用に割り当てられたメモリを解放する。|〇||
|[New()](http://docwiki.embarcadero.com/Libraries/ja/System.New)|新しい動的変数を作成し、パラメータに渡された<br>ポインタ変数を動的変数のポインタに設定する。<br>オリジナル Pascal では Alloc()。|〇|〇|

##### 変換手続き (Transfer procedures)

|手続き|説明|Turbo|UCSD|
|:---|:---|:--:|:--:|
|Pack()|パックされていない配列型の内容を<br>パックされている配列型へコピーする。|||
|Unpack()|パックされている配列型の内容を<br>パックされていない配列型へコピーする。|||

#### 標準関数 (Required functions)

##### 算術関数 (Arithmetic functions)

|関数|パラメータ|説明|Turbo|UCSD|
|:---|:---|:---|:--:|:--:|
|[Abs()](http://docwiki.embarcadero.com/Libraries/ja/System.Abs)|単純型の変数または<br>単純値|値の絶対値を返す|〇|〇|
|[ArcTan()](http://docwiki.embarcadero.com/Libraries/ja/System.ArcTan)|実数型の変数または<br>実数値|値の逆正接を返す|〇|〇|
|[Cos()](http://docwiki.embarcadero.com/Libraries/ja/System.Cos)|実数型の変数または実数値|値の余弦を返す|〇|〇|
|[Exp()](http://docwiki.embarcadero.com/Libraries/ja/System.Exp)|実数型の変数または<br>実数値|値の指数関数を返す|〇|〇|
|[Ln()](http://docwiki.embarcadero.com/Libraries/ja/System.Ln)|実数型の変数または<br>実数値|値の自然対数を返す|〇|〇|
|[Sin()](http://docwiki.embarcadero.com/Libraries/ja/System.Sin)|実数型の変数または<br>実数値|値の正弦を返す|〇|〇|
|[Sqr()](http://docwiki.embarcadero.com/Libraries/ja/System.Sqr)|単純型の変数または<br>単純値|値の 2 乗を返す|〇|〇|
|[Sqrt()](http://docwiki.embarcadero.com/Libraries/ja/System.Sqrt)|実数型の変数または<br>実数値|値の平方根を返す|〇|〇|

##### 変換関数 (Transfer functions)

|関数|パラメータ|説明|Turbo|UCSD|
|:---|:---|:---|:--:|:--:|
|[Round()](http://docwiki.embarcadero.com/Libraries/ja/System.Round)|実数型の変数または<br>実数値|値を丸めた整数を返す|〇|〇|
|[Trunc()](http://docwiki.embarcadero.com/Libraries/ja/System.Trunc)|実数型の変数または<br>実数値|値の整数部を返す|〇|〇|

##### 順序関数 (Ordinal functions)

|関数|パラメータ|説明|Turbo|UCSD|
|:---|:---|:---|:--:|:--:|
|[Chr()](http://docwiki.embarcadero.com/Libraries/ja/System.Chr)|順序型の変数または<br>順序数|順序数をもつ文字を返す。|〇|〇|
|[Ord()](http://docwiki.embarcadero.com/Libraries/ja/System.Ord)|文字型の変数または<br>文字定数|現在の文字集合での<br>順序数を返す。<br>オリジナル Pascal では Int()|〇|〇|
|[Pred()](http://docwiki.embarcadero.com/Libraries/ja/System.Pred)|整数型の変数|値の一つ前の値を返す|〇|〇|
|[Succ()](http://docwiki.embarcadero.com/Libraries/ja/System.Succ)|整数型の変数|値の一つ次の値を返す|〇|〇|

##### 論理関数 (Boolean functions)

|関数|パラメータ|説明|Turbo|UCSD|
|:---|:---|:---|:--:|:--:|
|[Eof()](http://docwiki.embarcadero.com/Libraries/ja/System.Eof)|ファイル型変数|ファイルの終わり|〇|〇|
|[Eoln()](http://docwiki.embarcadero.com/Libraries/ja/System.Eoln)|ファイル型変数|行の終わり|〇|〇|
|[Odd()](http://docwiki.embarcadero.com/Libraries/ja/System.Odd)|順序型の変数または<br>順序値|値が奇数のときに <br>True を返す|〇|〇|

Delphi にはこの他にも色々な組み込みルーチンが用意されています。

 - [Delphi 組み込みルーチン (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/Delphi_%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3)

## 記号

### 特殊シンボル (特殊記号)

**標準 Pascal:**

`# ' ( ) * + , - . / : ; < = > [ ] ↑ { }`

**Delphi:**

`# $ & ' ( ) * + , - . / : ; < = > @ [ ] ^ { }`

 - [特殊シンボル (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%A7%8B%E6%96%87%E8%A6%81%E7%B4%A0%EF%BC%88Delphi%EF%BC%89#.E7.89.B9.E6.AE.8A.E3.82.B7.E3.83.B3.E3.83.9C.E3.83.AB)

### CDC 科学用 64 文字集合

|   |0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|  **0** | : | A | B | C | D | E | F | G | H | I |
| **10** | J | K | L | M | N | O | P | Q | R | S |
| **20** | T | U | V | W | X | Y | Z | 0 | 1 | 2 |
| **30** | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | - | * |
| **40** | / | ( | ) | $ | = |   | , | . | &#x2261; | [ |
| **50** | ] | % | ≠ | &#x21B1; [^1] | ∨ | ∧ | ↑ | ↓  [^2] | < | > |
| **60** | &#x2264; | &#x2265;  | ￢  | ; |   |   |   |   |   |   |

 - [CDC display code (Wikipedia: en)](https://en.wikipedia.org/wiki/CDC_display_code)

### 文字集合変換ルール (1973)

| CDC (Pascal) | ∨ | ∧ | ￢ | ≠ | &#x2264; | &#x2265; | { | } | ↑ | [ | ] |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| ASCII | OR | AND | NOT | <> | <= | >= | /* | */ | @ | [ | ] |
| EBCDIC | ｜ | & | ￢ | ￢= | <= | >= | /* | */ | @ | (. | .) |

 - [The programming language Pascal (Revised Report) (1973)](https://www.research-collection.ethz.ch/handle/20.500.11850/68910)

### 代替表現 (ダイグラフ )

**標準 Pascal:**
※ 1983 年よりも前の Pascal では注釈 (`{ }` -> `(* *)`) 以外の代替表現は明確に定義されていません。

| 文字<br>(基準表現) | ダイグラフ<br>(代替表現) |
|:---:|:---:|
|↑ または ^|@|
|{|(*|
|}|*)|
|[|(.|
|]|.)|

『J&W』第 3 版以降では `↑ の代わりに @ または ^` という記述がありますが、ISO / ANSI Pascal では 

> 文字 ↑ は ISO 646の国別表現によっては文字 ^ と同等とみなされている。
> この規格では見やすさを考慮して文字 ↑ を用いる。

JIS ではさらに

> 文字 ↑ は JIS X 0201 の文字 ^ に対応する。 

とあるため、上記の表が正確だと思います。

**Delphi:**

Delphi での `@` は `↑` (または `^`) の代替表現ではなく演算子です。


 - [ダイグラフ (Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%80%E3%82%A4%E3%82%B0%E3%83%A9%E3%83%95)
 - [C++Builder とトライグラフ (Qiita)](https://qiita.com/ht_deko/items/36115af8a57636257445)
 - [ISO/IEC 646 (Wikipedia: en)](https://en.wikipedia.org/wiki/ISO/IEC_646)


### 予約語 (綴り記号)

**標準 Pascal:**

```
and       end       nil       set    
array     file      not       then
begin     for       of        to
case      function  or        type
const     goto      packed    until
div       if        procedure var
do        in        program   while  
downto    label     record    with      
else      mod       repeat    
```

**Delphi:**

```
and                 except              label               set    
array               exports             library             shl
as                  file                mod                 shr
asm                 finalization        nil                 string
begin               finally             not                 then
case                for                 object              threadvar
class               function            of                  to
const               goto                or                  try
constructor         if                  packed              type
destructor          implementation      procedure           unit
dispinterface       in                  program             until
div                 inherited           property            uses
do                  initialization      raise               var
downto              inline              record              while  
else                interface           repeat              with        
end                 is                  resourcestring      xor
```

 - [予約語 (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%A7%8B%E6%96%87%E8%A6%81%E7%B4%A0%EF%BC%88Delphi%EF%BC%89#.E4.BA.88.E7.B4.84.E8.AA.9E)


## 指令

### 指令
**標準 Pascal:**

```
forward
```

**Delphi:**

```
absolute            final               override            safecal
abstract            forward             package             sealed
assembler           helper              pascal              static
automated           implements          platform            stdcall
cdecl               index               private             stored
contains            inline              protected           strict
default             library             public              unsafe
delayed             local               published           varargs
deprecated          message             read                virtual
dispid              name                readonly            winapi
dynamic             near                reference           write
experimental        nodefault           register            writeonly
export              operator            reintroduce         
external            out                 requires
far                 overload            resident
```

 - [指令 (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%A7%8B%E6%96%87%E8%A6%81%E7%B4%A0%EF%BC%88Delphi%EF%BC%89#.E6.8C.87.E4.BB.A4)

### ヒント指令
**標準 Pascal:**

```
(なし)
```

**Delphi:**

```
platform           deprecated           library
```

 - [ヒント指令 (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E5%AE%A3%E8%A8%80%E3%81%A8%E6%96%87%EF%BC%88Delphi%EF%BC%89#.E3.83.92.E3.83.B3.E3.83.88.E6.8C.87.E4.BB.A4)


### 構文オプション (コンパイラ指令)

次の構文オプションは [プロジェクト | プロジェクトオプション] でも変更できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/c3ce4cc4-4f41-bc9d-8c57-055aa3bcea78.png)
※ * が付いているスイッチがデフォルトです。

**VAR 文字列の厳密処理 {$V}**

| | 説明 |
|:---:|:---|
|{$V+}*|厳密な型チェックが行われ，仮パラメータと<br>実パラメータが同一の文字列型であることを<br>要求する。|
|{$V-}|短い文字列型の変数はすべて実パラメータとして<br>使用可能。|

 - [(11.1.10.) オープン文字列パラメータ (Open String Parameters)](https://qiita.com/ht_deko/items/b93ac03bfee002f17137#11110-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E6%96%87%E5%AD%97%E5%88%97%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF-open-string-parameters)


**完全な論理評価 {$B}**

| | 説明 |
|:---:|:---|
|{$B+}|完全論理評価を行う|
|{$B-}*|短絡論理評価 (ショートサーキット論理評価)を<br>行う|

 - [4.1. 代入文と式](https://qiita.com/ht_deko/items/05af01a81f7c3bb5eeb4#41-%E4%BB%A3%E5%85%A5%E6%96%87%E3%81%A8%E5%BC%8F)


**拡張構文 {$X}**

| | 説明 |
|:---:|:---|
|{$X+}*|関数の結果を別の関数に渡したり演算や代入に<br>使用することなく破棄できる。<br>関数内で Result 変数が使える。<br>ヌルで終わる文字列と Delphi 文字列の<br>代入互換性がある。|
|{$X-}|関数の結果は別の関数に渡したり演算や代入に<br>使用しなくてはならない。<br>関数内で Result 変数は使えない。<br>ヌルで終わる文字列と Delphi 文字列の<br>代入互換性がない。|

 - [4.2. 手続き呼び出し文](https://qiita.com/ht_deko/items/05af01a81f7c3bb5eeb4#42-%E6%89%8B%E7%B6%9A%E3%81%8D%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E6%96%87)
 - [11.2. 関数 (Functions)](https://qiita.com/ht_deko/items/b93ac03bfee002f17137#112-%E9%96%A2%E6%95%B0-functions)
 - [(6.2.5.) NULL 終端文字列](https://qiita.com/ht_deko/items/eedda6d38b6d0887d4ac#625-null-%E7%B5%82%E7%AB%AF%E6%96%87%E5%AD%97%E5%88%97)

**型付き @ 演算子 {$T}**

| | 説明 |
|:---:|:---:|
|{$T+}|@ 演算子の結果の型は型付きポインタ|
|{$T-}*|@ 演算子の結果の型は型なしポインタ|

 - [(10.6.) 型チェック済みポインタ](https://qiita.com/ht_deko/items/745ad4a792d277d33831#106-%E5%9E%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E6%B8%88%E3%81%BF%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF)

**オープンパラメータ {$P}**

| | 説明 |
|:---:|:---|
|{$P+}*|**string** はオープン文字列パラメータ|
|{$P-}|**string** は変数パラメータ|

 - [(11.1.10.) オープン文字列パラメータ (Open String Parameters)](https://qiita.com/ht_deko/items/b93ac03bfee002f17137#11110-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E6%96%87%E5%AD%97%E5%88%97%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF-open-string-parameters)


**長い文字列を使う {$H}**

|  | 説明 |
|:---:|:---|
|{$H+}|**string** を短い文字列 (ShortString)|
|{$H-}*|**string** は長い文字列 (AnsiString)|

 - [(6.2.3.) Pascal String (パスカル文字列)](https://qiita.com/ht_deko/items/eedda6d38b6d0887d4ac#623-pascal-string-%E3%83%91%E3%82%B9%E3%82%AB%E3%83%AB%E6%96%87%E5%AD%97%E5%88%97)

**型付き定数への代入 {$J}**

| | 説明 |
|:---:|:---:|
|{$J+}|型付き定数へ書き込み可能|
|{$J-}*|型付き定数へ書き込み不可能|

 - [(3.3.2.) 型付きの定数 (Typed Constants)](https://qiita.com/ht_deko/items/2d5996cbfc82d734b247#332-%E5%9E%8B%E4%BB%98%E3%81%8D%E3%81%AE%E5%AE%9A%E6%95%B0-typed-constants)

## 資料とチュートリアル

### Pascal 関連で参考になるサイト

 - [ETH Research Collection](https://www.research-collection.ethz.ch/)
 - [Pascal Central](http://www.pascal-central.com/)
 - [Turbo Pascal Compiler Internals](http://turbopascal.org/)
 - [THE ISO 7185 STANDARD PASCAL PAGE](http://www.standardpascal.org/)
 - [Pascal for small machines](http://pascal.hansotten.com/)

### スイス連邦工科大学チューリッヒ校 (ETH) にある資料

 - [The programming language Pascal (1970)](https://www.research-collection.ethz.ch/handle/20.500.11850/68712)
 - [An axiomatic definition of the programming language Pascal (1972)](https://www.research-collection.ethz.ch/handle/20.500.11850/68663)
 - [The programming language Pascal (Revised Report) (1973)](https://www.research-collection.ethz.ch/handle/20.500.11850/68910)
 - [The PASCAL "P" compiler: Implementation notes (1974)](https://www.research-collection.ethz.ch/handle/20.500.11850/68666)
 - [PASCAL-S (1975)](https://www.research-collection.ethz.ch/handle/20.500.11850/68667)
 - [A Collection of Pascal programs (1979)](https://www.research-collection.ethz.ch/handle/20.500.11850/68676)

### 書籍とドキュメント

 - [Delphi 言語ガイド (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/Delphi_%E8%A8%80%E8%AA%9E%E3%82%AC%E3%82%A4%E3%83%89%EF%BC%9A%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9)
 - [Delphi’s Object Pascal Style Guide (DocWiki)](http://docwiki.embarcadero.com/RADStudio/en/Delphi%E2%80%99s_Object_Pascal_Style_Guide)
 - [Object Pascal Handbook 11.0 Alexandria Edition (日本語: 書籍)](https://www.amazon.co.jp/dp/4877835210/)
 - [Object Pascal Handbook 11.0 Alexandria Edition (英語: PDF / 無料)](https://lp.embarcadero.com/ObjectPascalHandbookD11)
 - [Object Pascal Handbook 10.4 Sydney Edition (英語: PDF / 無料)](https://lp.embarcadero.com/Object-Pascal-Handbook-2021)
 - [Object Pascal Handbook 10 Seattle Edition (日本語: 書籍)](https://www.amazon.co.jp/dp/487783401X/)
 - [OBJECT PASCAL HANDBOOK 10.4 Sydney Edition / 11.0 Alexandria Edition に掲載のソースコード (GitHub)](https://github.com/MarcoDelphiBooks/ObjectPascalHandbook104)
 - [Delphiで始める ビジュアルプログラミング (PDF / 無料)](https://www.embarcadero.com/images/jp/whitepaper/delphi-visual-programming-wp-sydney.pdf)
&nbsp;
 - ホワイトペーパー
   - [ホワイトペーパー (日本語版)](https://www.embarcadero.com/jp/resources/white-papers)
   - [ホワイトペーパー (英語版)](https://www.embarcadero.com/resources/white-papers/?dmy=true)
&nbsp;
 - [Packt の Delphi 関連書籍](https://search.packtpub.com/?query=Delphi&refinementList%5Bproduct_type%5D%5B0%5D=Book&refinementList%5Breleased%5D%5B0%5D=Available&refinementList%5Bcategory%5D%5B0%5D=Programming&refinementList%5Blanguage%5D%5B0%5D=Delphi)
    - [Delphi Cookbook - Third Edition (Daniele Spinetti, Daniele Teti, 2018)](https://www.packtpub.com/en-us/product/delphi-cookbook-9781788623186)
    - [Hands-On Design Patterns with Delphi (Primož Gabrijelčič, 2019)](https://www.packtpub.com/en-us/product/hands-on-design-patterns-with-delphi-9781789342437)
    - [Delphi Programming Projects (William Duarte, 2019)](https://www.packtpub.com/en-us/product/delphi-programming-projects-9781789135237)
    - [Delphi GUI Programming with FireMonkey (Andrea Magni, 2020)](https://www.packtpub.com/product/delphi-gui-programming-with-firemonkey/9781788624176)
    - [Fearless Cross-Platform Development with Delphi (David Cornelius, 2021)](https://www.packtpub.com/product/fearless-cross-platform-development-with-delphi/9781800203822)
    - [Delphi High Performance - Second Edition (Primož Gabrijelčič, 2023)](https://www.packtpub.com/en-jp/product/delphi-high-performance-9781805128335)
    - [Expert Delphi - Second Edition (Marco Cantù / Paweł Głowacki, 2024)](https://www.packtpub.com/en-jp/product/expert-delphi-9781805125181)
&nbsp;
 - [Leanpub の Delphi 関連書籍](https://leanpub.com/bookstore?search=Delphi)
    - [Coding In Delphi (Nick Hodges, 2014)](https://leanpub.com/codingindelphi) - [[無料 DL]](https://lp.embarcadero.com/CodeFasterinDelphi)
    - [More Coding In Delphi (Nick Hodges, 2015)](https://leanpub.com/morecodingindelphi) - [[無料 DL]](https://lp.embarcadero.com/MoreCodinginDelphi)
    - [Dependency Injection in Delphi (Nick Hodges, 2017)](https://leanpub.com/dependencyinjectionindelphi) - [[無料 DL]](https://lp.embarcadero.com/DependencyInjection)
    - [Code Faster in Delphi (Alister Christie, 2020)](https://leanpub.com/codefasterindelphi) - [[無料 DL]](https://lp.embarcadero.com/CodeFasterinDelphi)
    - [DelphiMVCFramework (DANIELE TETI, 2021)](https://leanpub.com/delphimvcframework)
    - [Code Better in Delphi (Alister Christie, 2023)](https://leanpub.com/codebetterindelphi)
&nbsp;
 - Qiita の書評
    - [Pascal / Delphi 関連の書籍を読んでみる (まとめ) (Qiita)](https://qiita.com/ht_deko/items/34bbcdea27ce224079e0)
&nbsp;
 - [Delphi の日本語書籍 (ht-deko.com) ](https://ht-deko.com/Delphi/books.html)

### 【DELPHI STARTER チュートリアルシリーズ】 シーズン2

～ 無料の開発環境 Delphi Starter Edition で Object Pascal言語を優しく学ぶ ～

 - [第1回 「シューティングゲームのプログラム」](https://qiita.com/kazaiso/items/eafa3d7a0d7207232a76)
 - [第2回 「変数と型」](https://qiita.com/kazaiso/items/94046c1e780c0a44b9dd)
 - [第3回 「条件とループ」](https://qiita.com/kazaiso/items/93be0a3a000fabbea368)
 - [第4回 「Function と Procedure (関数と手続き）」](https://qiita.com/kazaiso/items/13cad1ccee2f7835252f)
 - [第5回 「配列 と レコード」](https://qiita.com/kazaiso/items/3a648e9302cf27688b08)
 - [第6回 「文字列 と オブジェクト」](https://qiita.com/kazaiso/items/b3941a234853b9cb6abb)
 - [第7回 「オブジェクト指向」その1](https://qiita.com/kazaiso/items/c76eac60bdd4dd075fa3)
 - [第7回 「オブジェクト指向」その2](https://qiita.com/kazaiso/items/5d6b58966a00e91ae198)
 - [第8回 「作ってみよう」Delphiの部](https://community.embarcadero.com/blogs/entry/delphi-starter-2-8-delphi-japan)

### Delphi Starter Edition でメモ帳クローンを作る

 - [Delphi Starter Edition でメモ帳クローンを作る (前編) (Qiita)](https://qiita.com/ht_deko/items/bd854e8a22cf31b636b0)
 - [Delphi Starter Edition でメモ帳クローンを作る (後編) (Qiita)](https://qiita.com/ht_deko/items/d5c4de7d55eebca928e2)
 - [Delphi Starter Edition でメモ帳クローンを作る - 2nd Edition - (Qiita)](https://qiita.com/ht_deko/items/525cd67aaba16681c3ba)
    - [[編集(E)] （1）](https://qiita.com/ht_deko/items/f2f330ebdcb3f9f49e96)
    - [[編集(E)] （2）](https://qiita.com/ht_deko/items/d40247d93533c42f4ef0)
    - [[書式(O)]](https://qiita.com/ht_deko/items/4309e5fc56419a8aa05d)
    - [[表示(V)]](https://qiita.com/ht_deko/items/774482e86c8380a08bf8)
    - [[ヘルプ(H)]](https://qiita.com/ht_deko/items/2d82538c58ed2d16b261)
    - [[ファイル(F)]](https://qiita.com/ht_deko/items/46c476859388dd566b27)
    - [その他の機能](https://qiita.com/ht_deko/items/5347de15b7856f3008fc)
 - [Delphi Starter Edition でメモ帳クローンを作る - 番外編 (Qiita)](https://qiita.com/ht_deko/items/90b8500d0ca4fc286206)


### 後継言語や ISO 規格との比較

|   | Pascal<br>(1970) | Modula-2<br>(1979) | Oberon<br>(1988)/<br>Oberon-07<br>(2007) | Oberon-2<br>(1991) |
|:---|:---:|:---:|:---:|:---:|
| モジュール化 | △<br>ISO 10206<br>(1991)  | 〇  | 〇 | 〇 |
| オブジェクト指向 | ×<br>ドラフト | △<br>ISO 10514-3<br>(1988) | △ | 〇 |

※ [ISO/IEC 10206:1991](https://www.iso.org/standard/18237.html) = 拡張 Pascal (Extended Pascal)
※ [ISO/IEC 10514-3:1988](https://www.iso.org/standard/20793.html) = オブジェクト指向 Modula-2 (Object Oriented Modula-2)

### 検証環境一覧

 - 標準 Pascal: **PASCAL-P5**
 - UCSD Pascal: DOSBOX-X / **UCSD p-System IV.2.2**
 - Pascal/MT+ (CP/M): RunCPM (Win32) / **Pascal/MT+ ver5.6.1** 
 - Apple II Pascal: AppleWin / **Apple Pascal System 1.1**
 - Turbo Pascal (CP/M): RunCPM (Win32) / **Turbo Pascal 3.01A** 
 - Turbo Pascal (MS-DOS): DOSBOX-X / **Turbo Pascal 1.0 / 3.0 / 5.5**
 - MPW Pascal: Basilisk II | SheepShaver / **MPW Pascal 3.6d7**
 - Think Pascal: Basilisk II | SheepShaver / **Think Pascal 4.5d4**
 - Delphi: **Delphi 10.4 Sydney**
 - GNU Pascal: [ideone.com](https://ideone.com/)
 - Free Pascal: [ideone.com](https://ideone.com/)
 - Modula-2: **XDS-x86**
 - Oberon-2: **XDS-x86**

**See also:**

 - [PASCAL-P5 (SourceForge)](https://sourceforge.net/projects/pascalp5/)
 - [Embarcader Delphi (Embarcadero)](https://www.embarcadero.com/jp/products/delphi)
 - [RunCPM (Win32) についてのツイート](https://twitter.com/ht_deko/status/1101724797162012672)
 - [Apple Pascal System についてのツイート](https://twitter.com/ht_deko/status/1106444651764965376)
 - [MPW Pascal についてのツイート](https://twitter.com/ht_deko/status/1106589513365643264)
 - [Think Pascal についてのツイート](https://twitter.com/ht_deko/status/1106494591648198656)

### ギャラリー

**・Pascal-P5 (標準 Pascal)**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/394fb137-cc05-6732-657a-3b7a4357e56b.png)

**・Pure PASCAL (標準 Pascal)**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/d618b258-0077-c98b-83b5-6463b7fd7a50.png)

**・Apple II Pascal System (UCSD II.1)**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/fb656d41-289a-0431-cace-086a932587b3.png)

**・UCSD p-System IV.2.2 (Pecan Software Systems, Inc.)**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/ed14f9d3-8d27-030a-86f2-cf110f193a81.png)

**・Pascal/MT+ ver5.6.1**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b6c64acc-d7b9-8f58-945f-f2e7bda4052c.png)

**・Apple Macintosh Programmer's Workshop (WPM) 3.6d7**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/a6cae7ac-e807-3f7e-347d-2811a77bc54d.png)

**・Symantec THINK Pascal 4.5d4**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/0f26771b-8014-9735-03ae-a239e53f2ba5.png)

**・Blue Label Software (BLS) Pascal 1.2**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/06cb11ff-c43f-d9e5-d133-fb406f0309d1.png)

**・Borland Turbo Pascal 1.0 (MS-DOS)**
Compiler Version: 1.0
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/c6324141-6f8c-2762-e4f5-59261e7b6154.png)

**・Borland Turbo Pascal 3.01A (CP/M)**
Compiler Version: 3.0
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/fdab356e-934b-9741-ac21-307988a8a065.png)

**・Borland Turbo Pascal 5.5 (MS-DOS)**
Compiler Version: 5.5
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/353a6748-f71d-e938-b64f-441952c31455.png)

**・Borland Delphi 1**
Compiler Version: 8.0
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/503a1991-7c54-5979-f303-722bd17061c0.png)

**・Borland Delphi 7**
Compiler Version: 15.0
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/2e411e37-042c-2a9d-b367-c0bcffed2467.png)

**・Borland Kylix 3 for Delphi (Linux)**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/b83e56db-304e-bd32-6135-9cc4064ab01e.png)

**・CodeGear Delphi 2007**
Compiler Version: 18.5
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/55bdff72-9053-7aff-602d-b89b926e2232.png)

**・Embarcadero Delphi 10.4 Sydney**
Compiler Version: 34.0
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/02a51702-00f1-d714-7534-a028e5a99c3b.png)


**See also:**

 - [割と簡単に ’標準 Pascal' を試してみたい (Qiita)](https://qiita.com/ht_deko/items/41e95154e8da2f901698)
 - [割と簡単に ’標準 Modula-2 / Oberon-2' を試してみたい (Qiita)](https://qiita.com/ht_deko/items/8e8be01f749915167a91)
 - [UCSD Pascal を触るためだけの UCSD p-System 操作ガイド (Qiita)](https://qiita.com/ht_deko/items/50c0cb0fd3cbafc1f8e1) 
 - [Pascal/MT+ の簡単な使い方 (Qiita)](https://qiita.com/ht_deko/items/422683a76de349e79a7e)
 - [Macintosh Programmer's Workshop (MPW) Object Pascal の簡単な使い方 (Qiita)](https://qiita.com/ht_deko/items/de6838acd1d22722b674)
 - [Pascal の勉強に使えそうな Pascal 処理系 (Qiita)](https://qiita.com/ht_deko/items/6376997a6d74e77c89e3)


# 索引
[ [← 12. テキストファイルの入出力](https://qiita.com/ht_deko/items/391d6c1a53c7aaa3416f) ] [ [↑ 目次へ](https://qiita.com/ht_deko/items/e2796788c65c2cda1de5) ] [[用語集 →](https://qiita.com/ht_deko/items/56e4910d7e00d9bcc5b2)]

[^1]: ETH では `{` が使われていました。
[^2]: ETH では `}` が使われていました。