岡本@金沢大学です。
[fpr 1054]より:
>Delphi3の dfm って、Delphi2 と互換性
>がないようですね、私の持っているDelphi 2.0j ではエラーメッセージがでま
す
>が、無視して実行してみました。
私の場合も、Delphi3で作成したプログラム(Windowsの世界ではプロジェク
ト
というようですが)をDelphi2で開こうとするとエラーが出ました。コンポー
ネントのプロパティに違いがあるのではと思いました。ハードディスクに余裕
がないので、今はDelphi3のみをインストールして使っています。
Delphi3で作成されたプロジェクトをDelphi2用に直すのは次のように
しても出来るのではと思います。
Delphi2のプロジェクトと3のものとの違いによるエラーは、コンポー
ネントのプロパティにあるのではと思います。ユニットのuses節で宣言
されているものにも違いがあるかもしれません。このことを踏まえて、
次のようにしてDelphi3のプロジェクトをDelphi2用に書き移すことが
できるのではと思います。基本方針は、*.dfmはDelphi2で用意して、
*.pasのソースコードの部分はDelphi3で作成されたものからコピー
する、です。
まず、*.dfmを、Delphi2でプロジェクト新規作成によって用意します。
フォームに追加するコンポーネントはDelphi3の*.pasの内容に合わせます。
私の不偏分散を調べるプログラムの場合、*.pasを見て頂くとTForm1は次の
ようになっています。
TForm1 = class(TForm)
MsgLabel: TLabel;
OKButton: TButton;
ExitButton: TButton;
Label1: TLabel;
NEdit: TEdit;
procedure FormActivate(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
用いているコンポーネントは、以下の5つです。
MsgLabel: TLabel;
OKButton: TButton;
ExitButton: TButton;
Label1: TLabel;
NEdit: TEdit;
Delphi2で新規作成で表示されているフォームに、この4つのコンポーネント
を用意します。
次にイベントハンドラーの設定をします。上のプロジェクトでは次の5つの
ものが使われています。
procedure FormActivate(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
これらをDelphi2のオブジェクトインスペクタによって用意します。
各ハンドラの実行部は;を入れて空文としておきます。
例えば、
procedure FormActivate(Sender: TObject);
begin
;
end;
とします。これは実行部に何も書かないで次の作業に移るとそのハンドラが
Delphiによって勝手に消されてしまうことがあるからです。
以上の作業で、Delphi2での*.dfmが用意できたことになります。
*.pasのソースコードのコピーはWindowsのコピー/貼り付けの機能で
簡単に行えます。イベントとイベントハンドラの割り当てなどは*.dfm
に記述されている(これは*.dfmファイルをDelphiのエディタで開けば
テキストファイルとして表示されるので見ることができます)ので、
ユニットファイル全体をコピーすればよさそうですが、uses節など
Delphiが自動的に用意する部分はDelphi2と3で異なっている可能性が
ありますので注意が必要です。
以上の手順で、Delphi3のプロジェクトはDelphi2のものに書き移す
ことができると思います。
Delphi2で作成したプロジェクトはDelphi3でも開くことができる場合が
多いようです。拙著「Delphiプログラミング入門」(CQ出版社、1997)の
サンプルプログラムはDelphi2で作成したものですがDelphi3で開いても
大体大丈夫なようです。
上記の拙著で気を付けなければいけないのは、2.6節「コンポーネントの
インストール」のところです。リスト2.6.1(乱数生成用のクラス型)
で9〜10行目の
type TUniRandom = class(TComponent)
s1, s2, s3 : integer;
の箇所はpublicを挿入して
type TUniRandom = class(TComponent)
public
s1, s2, s3 : integer;
として下さい。
これは、Delphi3ではclass(TComponent)の直後はpublishedの指定であると
みなされているからです。
本年度から金沢大学総合情報処理センターの実習室にDelphi3/WindowsNTが
導入されましたので、授業で使っています。Delphi2で作成した上記のプロ
グラムはDelphi3で作成されたもののように開いて実行できています。
授業では、Delphi3によるビジュアルなプログラミング、実行時のGUI
の劇的な効果を学生さんは楽しんだようです。
岡本安晴
c00279 (at) simail.ne.jp
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。