トップへ(mam-mam.net/)

Delphiとは?テキストエディタ作成チュートリアル

検索:

Delphiってどんな言語?

Delphiを一言でいうと、マイクロソフト社VB6とC++を足して、ライブラリを.net並みにかなり充実させた感じ。
少しVB6やVBAを使ってた人は、簡単にDelphiでプログラムを作ることができます。
教育言語Pascalにオブジェクト指向が追加された言語だそうで、構文が厳格なので可読性が良いです。
まずはVB6みたいに使い、慣れてきたら構造体やポインタやオブジェクト指向にチャレンジしても十分にプログラムを作成できます。

また、Delphiで作成してコンパイルした実行ファイルはほとんどの場合、別途ランタイムのインストール無しで単体で実行できるので配布が楽です。
実行速度が速くクライアントのパワーを発揮させることができます。(ほぼC++と同じ処理速度だと思います。)
コンパイルが速く、直ぐ実行ファイルが生成されるのでデバッグが行いやすいです。
ただしマイナーであるという最大の弱点があります。

Delphiのダウンロード

Delphi Community Editionを無料でダウンロードして使うことができます。
https://www.embarcadero.com/jp/products/delphi/starter/free-download
プログラムに慣れてきたら上位版を購入するなり他社製品を使うなりすればいいでしょう。

「テキストエディタ」を作成してみる

(1)Delphiを起動して新規プロジェクトを作成する。

ファイル⇒新規作成⇒VCLフォームアプリケーションをクリックします。

Delphi IDE 新規プロジェクト作成

(2)ボタンを配置する。

右下にあるツールパレットの「Standard」グループ内にある「TButton」をフォームへドラッグ&ドロップします。
そうするとButton1が作成されます。

Delphi IDE TButtonのドラッグ&ドロップ

(3)ボタンに表示されている文字を「開く」に変更する

「Button1」をクリックして選択し、左下ペインにあるプロパティ[Caption]を「Button1」から「開く」に変更します。
そうするとボタンに表示されている文字が「開く」に変わります。

Delphi IDE TButtonのプロパティ設定

(4)ファイルを開くダイアログをフォームへ配置する。

右下にあるツールパレットの「Dialog」グループ内にある「TOpenDialog」をフォームへドラッグ&ドロップします。

Delphi IDE TOpenDialogのドラッグ&ドロップ

(5)OpenDialog1のプロパティ[Filter]を設定する。

「OpenDialog1」をクリックして選択します。
左下ペインにあるプロパティ[Filter]の[・・・]ボタンをクリックします。

Delphi IDE TOpenDialogのFilterプロパティ設定

(6)フィルタ名、フィルタを設定する。

フィルタ名とフィルタに「*.txt」を入力し、[OK]ボタンをクリックします。

Delphi IDE TOpenDialogのFilterプロパティ設定

Filterプロパティに「*.txt|*.txt」と入力されました。

Delphi IDE TOpenDialogのFilterプロパティ設定

(7)TMemoをフォームにドラッグ&ドロップし大きくする

右下にあるツールパレットの「Standard」グループ内にある「TMemo」をフォームへドラッグ&ドロップし、マウスでドラッグして大きくします。

Delphi IDE TMemoのドラッグ&ドロップ

(8)Memo1のプロパティ[Scrollbars]を設定する

「Memo1」をクリックして選択します。
左下ペインにあるプロパティ[Scrollbars]の右側にある[▼]ボタンをクリックして「ssBoth」に設定します。(スクロールバーが表示されます)

Delphi IDE TMemoのScrollbarsプロパティ設定

(9)「開く(Button1)」をクリックした時のイベントを作成する

「開く(Button1)」ボタンをクリックして選択します。
左下ペインのタブを「イベント」に切り替えて[OnClick]の右側をダブルクリックします。

Delphi IDE TButtonのOnClickイベント設定

(10)「コード」ビューへの切り替わり

上記(9)の操作により「開く(Button1)」ボタンをクリックした時に実行されるプログラムを記述する準備が整いました。
「画面のデザイン」ビューから「コード」ビューに切り替わりました。
「開く(Button1)」ボタンをクリックした時のソースコードの雛型が自動生成されています。

Delphi IDE TButtonのOnClickイベントにソースコードを記述

(11)プログラムを記述

以下の赤字の部分を記述します。

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Memo1.Lines.LoadFromFile(
      OpenDialog1.FileName, TEncoding.ANSI);
  end;
end;
Delphi IDE TButtonのOnClickイベントにソースコードを記述

<参考>右下にあるタブをクリックすれば「デザイン」と「ソースコード」の表示を切り替えできます。

Delphi IDE デザインとソースコードの表示切替

<参考>プログラムを以下に変えると、文字コードUTF-8のテキストファイルを読み込めます。
(元のソースコードだと文字コードShift-JISのテキストファイルを読み込めます。)

  OpenDialog1.FileName,TEncoding.ANSI);
        
  OpenDialog1.FileName,TEncoding.UTF8);

(12)プログラムを保存する

上部にある「すべて保存」ボタンをクリックします。

Delphi IDE すべて保存

保存先フォルダを「ドキュメント\Embarcadero\Studio\Project」にします。
「新しいフォルダ」をクリックし、フォルダ名を「テキストエディタ」にして、このフォルダをダブルクリックします。

Delphi IDE すべて保存

「保存」ボタンを押します。(1つのフォームとそのプログラムソースコードが保存されます)

Delphi IDE Unitの保存

次にプロジェクト(複数のフォームを束ねるようなもの。フォームが1つでも存在します)の保存先とファイル名を聞いてきますので、 そのまま「保存」ボタンを押します。

Delphi IDE プロジェクトの保存

これで作成したプログラムの保存が終わりました。

(13)実行する

上部にある右矢印ボタン、又はキーボードのF9を押すとコンパイル(パソコンが理解できる機械語へ翻訳すること)され実行できます。

Delphi IDE 実行

「開く」ボタンを押すと、テキストファイルを選択できます。テキストファイルを選んで「開く」ボタンを押すとテキストファイルが表示されます。

テキストエディタのファイルを開くボタン

実行ファイルは既に生成されていて、

c:\users\[OSログインしたユーザー名]\Documents\Embarcadero\Studio\Projects\テキストエディタ\Win32\Debug\Project1.exe

にあります。
このファイルをダブルクリックしても実行できます。
Delphiで作成した実行ファイルは通常、ほかのファイルに依存しないので、単体で実行することができます。(ランタイム配布など通常は必要なし)

上記サンプルではファイルを開くだけですが、
ファイルの保存はTSaveDialog(デフォルトでSaveDialog1の名前になる)と、 保存用のTButton(デフォルトでButton2の名前になる)を、
フォームにドラッグ&ドロップして、保存用の「Button2」ボタンのOnClickイベントに以下ソースコードを入力するだけです。

procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Memo1.Lines.SaveToFile(SaveDialog1.FileName,TEncoding.ANSI);
  end;
end;

UTF8で保存する場合は
Memo1.Lines.SaveToFile(SaveDialog1.FileName,TEncoding.UTF8);
とします。

既にオブジェクト指向でプログラミングしている

気づいた方もいらっしゃると思いますが、 DelphiではVB6のようにソースコードを記述するだけでオブジェクト指向プログラミングになっています。
上にスクロールしてソースコードを見ると「TForm」クラスから派生した「TForm1」クラスをプログラミングしていたことがわかります。

//ユニット名「Unit1」(このファイル名は必ずユニット名.pasでなければならない。)
unit Unit1;
//宣言部
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)  //TFormクラスの派生クラスTForm1の宣言
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

//グローバル変数の宣言
var
  Form1: TForm1;  //TForm1クラスのインスタンスが入る変数Form1の宣言

//実装部
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Memo1.Lines.LoadFromFile(
      OpenDialog1.FileName,TEncoding.ANSI);
  end;
end;

end.