以前お世話になりました「らりばど」です。
また判らないことがあり教えていただきたいのです。
環境:Windows2000 + Delphi6
汎用的に使うユーザ関数を目的別にわけてC言語でいうところの
ユーザヘッダファイルみたいなものにしてソースを整理したいと
思っています。
ヘルプを見ると、uses節の構文で、予約語[in]とソースの場所指
定をすることで可能とありますが、ソースを切り取ったファイル
を指定するだけではコンパイルできず、
「〜.dcuが見つかりません」とエラーになってしまいます。
ソース一例
> uses SysUtils, in '〜.pas';
'〜.pas'は関数部分を切り取ってテキスト形式で保存したもので
す。
おそらくヘッダファイルにしようとしているファイルの生成方法
に問題があるのではないかと思っていますが、作り方がわかりま
せん。
何かコンパイルするなど必要なのでしょうか。
よろしくお願いします。
書き忘れたので補足します。
コンソールアプリケーションのソースより引数判定のロジックを
関数化しました。
プログラムの本数もそれなりに多くなってきたので、全てのプロ
グラムをメンテナンスするのが面倒になってきたので、C言語み
たくヘッダ化しようと思った次第です。
ヘッダファイルとはちょっと違いますが、ユニットをわける場合ならば、必要なユニットをuses節に加えればOKです。
たとえば、
------------------------------------------------------------
program Test;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit2;
// 追加のユニット
begin
proc1; // Unit2で定義されたプロシージャ
end.
------------------------------------------------------------
unit Unit2;
interface
uses
SysUtils;
procedure proc1;
implementation
procedure proc1;
begin
writeln('proc1');
end;
end.
------------------------------------------------------------
こんな感じ。
たとえば、Unit2.pasのunit節が、
unit Unit1;
だったら、Test.dpr(上の方のソース)では、
uses
SysUtils,
Unit1 in 'Unit2.pas';
となります。
相対パスでもうまくいくようですが、ライブラリパスが通っていない場合は絶対パスのほうがいいです。
C言語のヘッダのようにするならば、分割コンパイルしたOBJを、
{$L Unit2.OBJ}
のようにリンクして、
procedure proc1; external;
とすれば、Unit2.OBJのproc1を使うようになります。
こっちは、ヘルプで「external 宣言」を見てください。
すみません、偶然にも自己解決してしまいました。
まず「ユニット」として〜.pasファイルを作成しないと
ダメということに気付きました。
しかし開発画面から.pasファイルを作成、保存しても、
親ソースから要求される〜.dcuファイルが作成されない
のでいろいろ試行してみたところ、「プロジェクトに追
加」というメニューに気付きました。
1)プロジェクトに追加で〜.pasファイルを指定し親ソ
ースに追加
2)親ソース毎コンパイル
で〜.dcuファイルを作成することができました。
あとは親ファイルから
> uses SysUtils, ユニット名;
と指定することで思っていた通りの動きをしてくれるよ
うになりました。
3日ほど悩んでいたのですが、もうちょっとの踏ん張り
&努力が足りなかったようです。
お騒がせ致しました。
>にしのさん
お世話になっております。
すみません、私の解決文を書いてる最中にレスつけていただいて
いたみたいです。
お手数をお掛けしました。
ツイート | ![]() |