関数の処理を別ファイルに分けるには?

解決


かこーとん  2006-11-28 01:41:43  No: 24090

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure TForm1.FormCreate(Sender: TObject);
    procedure testa;
  private
    a: Integer;
  public
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  a:=0;
  testa;
end;

procedure TForm1.testa;
begin
  a:=a+1;
end;

end.

例えば上記のようなプログラムがある場合、testaの処理内容を別のファイルに記述して実行するにはどのようにしたらいいのでしょうか?
現在作っているプログラムのコードの量が多くなったので分けたいのですがやり方がいまいち分かりません。


放浪者  2006-11-28 02:04:38  No: 24091

$Iを使えば?


もにゃ  2006-11-28 02:33:12  No: 24092

別ファイルをUnit2.pasとします

unit Unit1;
uses
  Unit2; <-新たに追加

Unit2.pas
------------------------------------
unit Unit2;

interface

uses
  Windows, Messages;

  function Hoge(i:integer):integer;

implementation

function Hoge(i:integer):integer;
begin
  Result:=i + i;
end;

end.
-------------------------------------------

見たいにすればおけです。


かこーとん  2006-11-28 03:13:28  No: 24093

>放浪者さん
ヘルプを見てみたのですが、インクルードされる側のファイルはどのように記述すればいいのでしょうか?

>もにゃさん
解答ありがとうございます。
答えていただいた例を参考にしてできそうです。
ただ、実際のプログラムでは、testaにあたる処理の中でTForm1で定義されているフィールドをいくつも使っているので、
パラメータとして値を渡すとどうも見栄えが悪くなりそうなのでパラメータとして渡さずにする方法はないでしょうか?
理想としては、testaの処理部分をそのまま別のファイルに記述して、
コンパイルするときにその別のファイルを付け加えてコンパイルする、というような感じにしたいのですが。


放浪者  2006-11-28 03:37:41  No: 24094

たぶんコンナ感じ
Unit1.pas---------------------------------------------------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure testa;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    a: Integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$I include.txt}

procedure TForm1.FormCreate(Sender: TObject);
begin
  a:=0;
  testa;
end;
end.

Include.txt------------------------------------------------------------
procedure TForm1.testa;
begin
  a:=a+1;
  Caption := IntToStr(a);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  testa;
end;


かこーとん  2006-11-28 03:48:18  No: 24095

>放浪者さん
早速試してみたところ、思っていたとおりのことができました。
ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加