Sign in Join
Wiki copytemporary

Console Mode Pascal/ja: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## コンソールモードPascalプログラミング
22
33User:Kirkpatcによる
44
55今日、多くのPascalプログラマにとって、統合環境(IDE)でGUIプログラミングをするのが当たり前になっています。 IDEを使っていても、Pascal言語でシンプルなツールをコンソールモードで書きたい、というビギナーの方も多いでしょう。 また、複雑なシステム制御のために、コンソールやテキストモードでアプリケーションを書きたいと思っているかもしれません。
66
77LazarusはPascalを勉強するための理想的な環境であり、テキストモードプログラムを開発することができます。 ソースハイライト付きのエディタ、ライブラリアクセス、複雑な検索や、コード補完、文法チェックなど、全てのIDEの機能が使えます。ビジュアルコンポーネントのフォームが必要ないものでも、Lazarusのエディタは偉大なプログラム開発環境です。 コンパイルやデバッグ実行などの開発サイクルの間、エディタを離れる必要はありません。
88
99コンソールモードのプログラムを開始するには、メインメニューで Project -\> New Projectを選択します。それから、**Program'',**Console Application**または**Custom Program'''を選択します。 IDEはGUIアプリケーションのときに必要な余分なファイルを生成せず、Object Inspectorも表示しませんが、ソースエディタには、プログラムのスケルトンがすでに開かれていて、あなたの入力を待っています。
1010
1111### カスタムプログラム
1212
1313とても短い最小のpascalプログラムを作る時に選択します。 もし、自分自身ですべてコーディングしたいとき、簡単なテストを行ってすぐファイルを消しそうな、そういう時に利用できます。
1414
1515### プログラム
1616
1717だいたいカスタムプログラムと同じですが、IDEがほんの少しだけ補助をします。たとえば、他のユニットを追加したときに、IDEは自動的にユニット名をプログラムのusesセクションに追加します。 この動作はプロジェクトオプションで定義されていますので、いつでも'プログラム'と'カスタムプログラム'の動作を切り替えることができます。
1818
1919まったくのビギナーへの例:
2020
2121 program Project1;
2222 {$mode objfpc}{$H+}
2323 uses
2424 {$IFDEF UNIX}{$IFDEF UseCThreads}
2525 cthreads,
2626 {$ENDIF}{$ENDIF}
2727 Classes
2828 { このあとにユニットを追加できます。 };
2929 begin
3030 writeln('Hello World!');
3131 readln;
3232 end.
3333
3434### コンソールアプリケーション
3535
3636新しいクラスをTCustomApplicationから派生させて、コンソールプログラムを作る方法を紹介しましょう。TCustomApplicationは多くの共通の機能、コマンドラインのユーティリティなどの製作を補助する機能を提供しています。 たとえば、コマンドラインオプションをチェックしたり、ヘルプを書いたり、環境変数を調べたり、例外ハンドラを扱えるようにしたりします。すべてのLCLプログラムはこのクラスを自動的に使います。
3737
3838## コンパイル
3939
4040プログラムの編集が終わったら、メインメニューでRun-\>Runを選択するか、ボタンバーの緑色の三角のシンボル(実行)をクリックすることで、コンパイルして実行することができます。 すべてのコンパイラメッセージはメッセージボックスに現れます。深刻なエラーがなければ、最終的には、次のように表示されるでしょう。
4141
4242'Project "Project1" successfully built.:)'.
4343
4444## 実行
4545
4646コンパイルしたプログラムはどこにあるのでしょうか?
4747
4848まだソースコードを保存してなければ、IDEは一時ディレクトリに保存しています。
4949
5050Linuxでは /tmp, Windowsでは C:\temp です。詳しくはテストプロジェクトをビルドしたときの Enviroment Options/ Files /Directoryを見てください。
5151
5252もし、すでのプロジェクトを保存していれば、プログラムはproject1.lpiといったプロジェクトファイルと同じディレクトリに作成されています。
5353
5454プログラムはコンソールウインドウ、もしくは端末画面から、cdコマンドで上記のディレクトリに移り、プログラムの名前をタイプします。 (UnixやLinuxでは次のように入力してください。
5555
56-`./Project1`
56+```text
57+./Project1
58+```
5759
5860) しかし、Lazarusエディタと端末画面を行き来することはあまり便利の良いものではありません。幸い、LazarusにはLazarus環境の下で端末画面を開くメカニズムがあります。
5961
6062## IDEで実行する
6163
6264メインメニューから、Run-\>Run Parametersを選択し、"Use launching application"にチェックをつけます。 初回これを実行して、コンパイル/実行の手順をふむと、次のようなメッセージが表示されるかもしれません。
6365
64-`"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  `
66+```text
67+"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".
68+```
6569
6670このようになったら、ファイルに適切なパーミッションを付加します。(たとえば、chmod +x ファイル名 などとします)。 これらの作業はルートとして実行しなくてはなりません。この後でプログラムを実行する度に、コンソールウインドウが表示されて、readln,writelnのようなテキスト入出力が実行されます。
6771
6872プログラムの実行終了後、"Press enter"メッセージが画面上にあらわれます。これは、プログラムの最後の出力メッセージを読める機会をあたえてくれます。enterキーを押すと、コンソールウインドウが閉じます。
6973
7074## よくある使い方
7175
7276コンソールモードは、標準パスカル教科書の全ての例題を実行するために、あるいは、自分自身で書いたプログラムを実行するために、Lazarusエディタを使うことが出来ます。もっともよく使う方法は、OS環境下にあるコマンドを実行したり、他のプログラムを実行したりすることです。(他のプログラムというのは、Pascalのほか、C,Perl,シェル、バッチスクリプトなど、何で書かれていてもかまいません)
7377
7478### シェルコマンドの実行
7579
7680下記に*Custom Program* や *Program* の例を示します。:
7781
7882 Program TryShell;
7983 uses classes, unix;
8084 var S: longint;
8185 begin
8286 S := fpsystem ('/bin/ls -la *.p*'); //lists .pp, .pas, .php, .png etc in current directory
8387 writeln ('Program exited with status : ', S)
8488 end.
8589
8690### Example: fpcとlazarusを最新にする
8791
8892複雑なコマンドよりも、さらに複雑なことを実行することができます。たとえば、すでにFPCやLazarusのSVNリポジトリをチェックアウトしているのであれば、次のコードで最新のファイルをSVNリポジトリから取得することができます。
8993
9094 Program LazUpdate;
9195 uses classes, unix;
9296 var s : longint;
9397 begin
9498 S := fpsystem ('cd /usr/local/src/fpc/devel/fpc ; make clean');
9599 S := fpsystem ('cd /usr/local/src/fpc/devel/lazarus ; make clean');
96100 S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update fpc >& ~/cvscheckout.log');
97101 S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update lazarus >& ~/cvslaz.log');
98102 end.
99103
100104コマンドの使い方に注意してみてください。
101105
102-`fpsystem ('cd /somedirectory')`\
103-`fpsystem ('do something in that subdirectory')`
106+```text
107+fpsystem ('cd /somedirectory')
108+fpsystem ('do something in that subdirectory')
109+```
104110
105111これは上手く働きません。なぜなら、個々のfpsystem関数呼び出しは、プログラムの開始ディレクトリから開始されるからです。ですから、シェルに、1行に複数行を区切って入れるようにして関数を呼び出しします。
106112
107113もちろん、Pascalのように個々のコマンドを分割する必要はありません。次のようにスクリプトファイルを生成しておこなう方法もあります。([fpc buildfaq](http://www.stack.nl/~marcov/buildfaq.pdf)より):
108114
109115 #!/bin/sh
110116 cd /usr/local/src/fpc/devel
111117 cd fpc
112118 make clean
113119 cd ..
114120 cd lazarus
115121 make clean
116122 cd ..
117123 svn up fpc >& ~/cvscheckout.log
118124 svn up lazarus >& ~/cvslaz.log
119125
120126これをupdatelaz.shで保存して、次のPascalプログラムから呼び出します。
121127
122128 Program LazUpdate1;
123129 uses classes, unix;
124130 var S : longint;
125131 begin
126132 S := fpsystem ('updatelaz.sh')
127133 end.
128134
129135## コマンドラインパラメータ
130136
131137[[Command line parameters and environment variables|Command line parameters and environment variablesをみてください]]。
132138
133139## Orginal contributors
134140
135141This page has been converted from the epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=ConsoleModePascal). Original content by User:Kirkpatc.
136142
137143---
138144*From the Free Pascal wiki, page "Console Mode Pascal/ja", as it stood on 2009-01-17 after a change by Saeka-jp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history