岡本@金沢大学です。 [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
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。