Difference between revisions of "Console Mode Pascal/ja"

From Lazarus wiki
Jump to navigationJump to search
 
(4 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
[[User:Kirkpatc]]による
 
[[User:Kirkpatc]]による
  
今日、多くのPascalプログラマにとって、統合環境(IDE)でGUIプログラミングをするのが流行っています。また、Pascal言語の基本的なツールを書きたい、というビギナーの方も多いでしょう。
+
今日、多くのPascalプログラマにとって、統合環境(IDE)でGUIプログラミングをするのが当たり前になっています。
その一方、複雑なシステム制御のために、コンソールやテキストモードでアプリケーションを書きたいと思っているかもしれません。
+
IDEを使っていても、Pascal言語でシンプルなツールをコンソールモードで書きたい、というビギナーの方も多いでしょう。
 +
また、複雑なシステム制御のために、コンソールやテキストモードでアプリケーションを書きたいと思っているかもしれません。
  
LazarusはPascalを勉強するための理想的な環境であり、テキストモードプログラムを開発することができます。ソースハイライト付きのエディタ、ライブラリアクセス、複雑な検索や、コード補完、文法チェックなど、全てのIDEの機能が使えます。ビジュアルコンポーネントのフォームが必要ないものでも、Lazarusのエディタは偉大なプログラム開発環境です。
+
LazarusはPascalを勉強するための理想的な環境であり、テキストモードプログラムを開発することができます。
 +
ソースハイライト付きのエディタ、ライブラリアクセス、複雑な検索や、コード補完、文法チェックなど、全てのIDEの機能が使えます。ビジュアルコンポーネントのフォームが必要ないものでも、Lazarusのエディタは偉大なプログラム開発環境です。
 
コンパイルやデバッグ実行などの開発サイクルの間、エディタを離れる必要はありません。
 
コンパイルやデバッグ実行などの開発サイクルの間、エディタを離れる必要はありません。
  
Line 55: Line 57:
 
== 実行 ==
 
== 実行 ==
  
But where is the program??!!
+
コンパイルしたプログラムはどこにあるのでしょうか?
  
If you have ''not'' yet saved the program, then the IDE put it into the ''temporary'' directory (e.g. /tmp under linux, C:\temp under windows, see Environment Options / Files / Directory for building test projects).
+
まだソースコードを保存してなければ、IDEは一時ディレクトリに保存しています。
  
If you already saved the project, then the program was created in the same directory, where you saved the project1.lpi file.
+
Linuxでは /tmp, Windowsでは C:\temp です。詳しくはテストプロジェクトをビルドしたときの Enviroment Options/ Files /Directoryを見てください。
  
You can execute the program by going to a console (terminal) window, use '''cd''' to change to the directory and typing the name of the program (in Unix/Linux, if it is in the current directory you will probably have to type
+
もし、すでのプロジェクトを保存していれば、プログラムはproject1.lpiといったプロジェクトファイルと同じディレクトリに作成されています。
  
 +
プログラムはコンソールウインドウ、もしくは端末画面から、cdコマンドで上記のディレクトリに移り、プログラムの名前をタイプします。
 +
(UnixやLinuxでは次のように入力してください。
 
  ./Project1
 
  ./Project1
 
+
)
as it won't be found in the standard PATH). However, it can be very inconvenient to keep skipping out of the Lazarus Editor and into a terminal window and back again. Fortunately, there is a mechanism that allows a terminal window to be opened from within the Lazarus environment.
+
しかし、Lazarusエディタと端末画面を行き来することはあまり便利の良いものではありません。幸い、LazarusにはLazarus環境の下で端末画面を開くメカニズムがあります。
  
 
== IDEで実行する ==
 
== IDEで実行する ==
  
From the Main Menu, select Run -> Run Parameters, then check the box for "Use launching application". The first time you do this and try the Compile/Run sequence, you will probably get a rude message to say
+
メインメニューから、Run->Run Parametersを選択し、"Use launching application"にチェックをつけます。
 +
初回これを実行して、コンパイル/実行の手順をふむと、次のようなメッセージが表示されるかもしれません。
  
 
  "xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".   
 
  "xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".   
  
If this happens, you need to change the permissions on the appropriate file (for example using chmod +x filename, or using the Windows utility for changing permissions); you might have to do this as root. After this, each time you launch your program, a console box will appear and all your text i/o (readln, writeln etc) will appear in it.
+
このようになったら、ファイルに適切なパーミッションを付加します。(たとえば、chmod +x ファイル名 などとします)。
   
+
これらの作業はルートとして実行しなくてはなりません。この後でプログラムを実行する度に、コンソールウインドウが表示されて、readln,writelnのようなテキスト入出力が実行されます。
After your program has finished execution, a message "Press enter" appears on the screen. Thus any output your program generated will remain on the screen until you have had a chance to read it; after you press 'enter' the console window closes.
+
 
 +
プログラムの実行終了後、"Press enter"メッセージが画面上にあらわれます。これは、プログラムの最後の出力メッセージを読める機会をあたえてくれます。enterキーを押すと、コンソールウインドウが閉じます。
  
== 例題 ==
+
== よくある使い方 ==
  
You can use the Lazarus editor to try out all the examples in the standard Pascal text-books, or you can write your own. Some of the most useful procedures are those for executing system commands or for running other programs (which may have been written in Pascal, C or Perl, or may be shell or Batch scripts).
+
コンソールモードは、標準パスカル教科書の全ての例題を実行するために、あるいは、自分自身で書いたプログラムを実行するために、Lazarusエディタを使うことが出来ます。もっともよく使う方法は、OS環境下にあるコマンドを実行したり、他のプログラムを実行したりすることです。(他のプログラムというのは、Pascalのほか、C,Perl,シェル、バッチスクリプトなど、何で書かれていてもかまいません)
  
 
=== シェルコマンドの実行 ===
 
=== シェルコマンドの実行 ===
  
Here is an example for a ''Custom Program'' or ''Program'':
+
 
 +
下記に''Custom Program'' ''Program'' の例を示します。:
  
 
<pre>
 
<pre>
Line 97: Line 104:
 
=== Example: fpcとlazarusを最新にする ===
 
=== Example: fpcとlazarusを最新にする ===
  
Rather more complex commands can be executed. For example, if you have already checked out the SVN repositories for FPC and Lazarus (see [http://www.stack.nl/~marcov/buildfaq.pdf fpc buildfaq]) you could keep your FPC and Lazarus source files up-to-date by retrieval from the SVN repository with the following sequence of calls:
+
複雑なコマンドよりも、さらに複雑なことを実行することができます。たとえば、すでにFPCやLazarusのSVNリポジトリをチェックアウトしているのであれば、次のコードで最新のファイルをSVNリポジトリから取得することができます。
  
 
<pre>
 
<pre>
Line 111: Line 118:
 
</pre>
 
</pre>
  
Note that issuing the command
+
コマンドの使い方に注意してみてください。
  
 
  fpsystem ('cd /somedirectory')
 
  fpsystem ('cd /somedirectory')
followed by
 
 
  fpsystem ('do something in that subdirectory')
 
  fpsystem ('do something in that subdirectory')
doesn't work, because after each fpsystem function call the execution of the program returns to the directory it started in; so we need to include multiple statements per line within our calls to shell.
 
  
Of course, you don't have to enter every command as a separate line of Pascal; you could create a script file like this (from [http://www.stack.nl/~marcov/buildfaq.pdf fpc buildfaq]):
+
これは上手く働きません。なぜなら、個々のfpsystem関数呼び出しは、プログラムの開始ディレクトリから開始されるからです。ですから、シェルに、1行に複数行を区切って入れるようにして関数を呼び出しします。
 +
 
 +
もちろん、Pascalのように個々のコマンドを分割する必要はありません。次のようにスクリプトファイルを生成しておこなう方法もあります。([http://www.stack.nl/~marcov/buildfaq.pdf fpc buildfaq]より):
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
Line 132: Line 139:
 
</pre>
 
</pre>
  
Name it updatelaz.sh, and then call it from a Pascal program thus:
+
これをupdatelaz.shで保存して、次のPascalプログラムから呼び出します。
  
 
<pre>
 
<pre>
Line 145: Line 152:
 
== コマンドラインパラメータ ==
 
== コマンドラインパラメータ ==
  
See [[Command line parameters and environment variables]].
+
[[Command line parameters and environment variables]]をみてください。
  
 
==Orginal contributors==
 
==Orginal contributors==
 
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=ConsoleModePascal version]. Original content by [[User:Kirkpatc]].
 
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=ConsoleModePascal version]. Original content by [[User:Kirkpatc]].

Latest revision as of 03:35, 17 January 2009

Deutsch (de) English (en) español (es) suomi (fi) magyar (hu) 日本語 (ja) русский (ru) slovenčina (sk)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

コンソールモードPascalプログラミング

User:Kirkpatcによる

今日、多くのPascalプログラマにとって、統合環境(IDE)でGUIプログラミングをするのが当たり前になっています。 IDEを使っていても、Pascal言語でシンプルなツールをコンソールモードで書きたい、というビギナーの方も多いでしょう。 また、複雑なシステム制御のために、コンソールやテキストモードでアプリケーションを書きたいと思っているかもしれません。

LazarusはPascalを勉強するための理想的な環境であり、テキストモードプログラムを開発することができます。 ソースハイライト付きのエディタ、ライブラリアクセス、複雑な検索や、コード補完、文法チェックなど、全てのIDEの機能が使えます。ビジュアルコンポーネントのフォームが必要ないものでも、Lazarusのエディタは偉大なプログラム開発環境です。 コンパイルやデバッグ実行などの開発サイクルの間、エディタを離れる必要はありません。

コンソールモードのプログラムを開始するには、メインメニューで Project -> New Projectを選択します。それから、'Program, Console Application または Custom Programを選択します。 IDEはGUIアプリケーションのときに必要な余分なファイルを生成せず、Object Inspectorも表示しませんが、ソースエディタには、プログラムのスケルトンがすでに開かれていて、あなたの入力を待っています。

カスタムプログラム

とても短い最小のpascalプログラムを作る時に選択します。 もし、自分自身ですべてコーディングしたいとき、簡単なテストを行ってすぐファイルを消しそうな、そういう時に利用できます。

プログラム

だいたいカスタムプログラムと同じですが、IDEがほんの少しだけ補助をします。たとえば、他のユニットを追加したときに、IDEは自動的にユニット名をプログラムのusesセクションに追加します。 この動作はプロジェクトオプションで定義されていますので、いつでも'プログラム'と'カスタムプログラム'の動作を切り替えることができます。

まったくのビギナーへの例:

program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { このあとにユニットを追加できます。 };
begin
  writeln('Hello World!');
  readln;
end.

コンソールアプリケーション

新しいクラスをTCustomApplicationから派生させて、コンソールプログラムを作る方法を紹介しましょう。TCustomApplicationは多くの共通の機能、コマンドラインのユーティリティなどの製作を補助する機能を提供しています。 たとえば、コマンドラインオプションをチェックしたり、ヘルプを書いたり、環境変数を調べたり、例外ハンドラを扱えるようにしたりします。すべてのLCLプログラムはこのクラスを自動的に使います。

コンパイル

プログラムの編集が終わったら、メインメニューでRun->Runを選択するか、ボタンバーの緑色の三角のシンボル(実行)をクリックすることで、コンパイルして実行することができます。 すべてのコンパイラメッセージはメッセージボックスに現れます。深刻なエラーがなければ、最終的には、次のように表示されるでしょう。

'Project "Project1" successfully built.:)'.

実行

コンパイルしたプログラムはどこにあるのでしょうか?

まだソースコードを保存してなければ、IDEは一時ディレクトリに保存しています。

Linuxでは /tmp, Windowsでは C:\temp です。詳しくはテストプロジェクトをビルドしたときの Enviroment Options/ Files /Directoryを見てください。

もし、すでのプロジェクトを保存していれば、プログラムはproject1.lpiといったプロジェクトファイルと同じディレクトリに作成されています。

プログラムはコンソールウインドウ、もしくは端末画面から、cdコマンドで上記のディレクトリに移り、プログラムの名前をタイプします。 (UnixやLinuxでは次のように入力してください。

./Project1

) しかし、Lazarusエディタと端末画面を行き来することはあまり便利の良いものではありません。幸い、LazarusにはLazarus環境の下で端末画面を開くメカニズムがあります。

IDEで実行する

メインメニューから、Run->Run Parametersを選択し、"Use launching application"にチェックをつけます。 初回これを実行して、コンパイル/実行の手順をふむと、次のようなメッセージが表示されるかもしれません。

"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  

このようになったら、ファイルに適切なパーミッションを付加します。(たとえば、chmod +x ファイル名 などとします)。 これらの作業はルートとして実行しなくてはなりません。この後でプログラムを実行する度に、コンソールウインドウが表示されて、readln,writelnのようなテキスト入出力が実行されます。

プログラムの実行終了後、"Press enter"メッセージが画面上にあらわれます。これは、プログラムの最後の出力メッセージを読める機会をあたえてくれます。enterキーを押すと、コンソールウインドウが閉じます。

よくある使い方

コンソールモードは、標準パスカル教科書の全ての例題を実行するために、あるいは、自分自身で書いたプログラムを実行するために、Lazarusエディタを使うことが出来ます。もっともよく使う方法は、OS環境下にあるコマンドを実行したり、他のプログラムを実行したりすることです。(他のプログラムというのは、Pascalのほか、C,Perl,シェル、バッチスクリプトなど、何で書かれていてもかまいません)

シェルコマンドの実行

下記にCustom ProgramProgram の例を示します。:

Program TryShell;
uses classes, unix;
var S: longint;
begin
  S := fpsystem ('/bin/ls -la *.p*'); //lists .pp, .pas, .php, .png etc in current directory
  writeln ('Program exited with status : ', S)
end.

Example: fpcとlazarusを最新にする

複雑なコマンドよりも、さらに複雑なことを実行することができます。たとえば、すでにFPCやLazarusのSVNリポジトリをチェックアウトしているのであれば、次のコードで最新のファイルをSVNリポジトリから取得することができます。

Program LazUpdate;
uses classes, unix;
var s : longint;
begin 
  S := fpsystem ('cd /usr/local/src/fpc/devel/fpc ; make clean');
  S := fpsystem ('cd /usr/local/src/fpc/devel/lazarus ; make clean');
  S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update fpc >& ~/cvscheckout.log');
  S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update lazarus >& ~/cvslaz.log');
end.

コマンドの使い方に注意してみてください。

fpsystem ('cd /somedirectory')
fpsystem ('do something in that subdirectory')

これは上手く働きません。なぜなら、個々のfpsystem関数呼び出しは、プログラムの開始ディレクトリから開始されるからです。ですから、シェルに、1行に複数行を区切って入れるようにして関数を呼び出しします。

もちろん、Pascalのように個々のコマンドを分割する必要はありません。次のようにスクリプトファイルを生成しておこなう方法もあります。(fpc buildfaqより):

#!/bin/sh
cd /usr/local/src/fpc/devel
cd fpc
make clean
cd ..
cd lazarus
make clean
cd ..
svn up fpc >& ~/cvscheckout.log
svn up lazarus >& ~/cvslaz.log 

これをupdatelaz.shで保存して、次のPascalプログラムから呼び出します。

Program LazUpdate1;
uses classes, unix;
var S : longint; 
begin
  S := fpsystem ('updatelaz.sh')
end.

コマンドラインパラメータ

Command line parameters and environment variablesをみてください。

Orginal contributors

This page has been converted from the epikwiki version. Original content by User:Kirkpatc.