Pascal の初心者用の質問・相談所

このエントリーをはてなブックマークに追加
Delphi6パーソナルを使った pascalのスタート教室

1) FILE-> 新規作成->その他->コンソールアプリケーションを選びます
 すると
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
{ TODO -oUser -cConsole Main : この下にコードを記述してください }
end.
とソースが表示されます
 program Project1;  uses SysUtils; はボーランドによる拡張ですから取り去ってかまいません
{$APPTYPE CONSOLE} も取り去ってかまいませんが、代わりにコンパイルオプションでコンソール
アプリである事を指示する必要があります

結局、最初に書くアプリは これでいいでしょう 
{$APPTYPE CONSOLE}
begin
writeln('こんにちは');
readln;
end.

この2行を入力した後、F9 を押せば実行出来ます
135ふむふむ(納得):02/02/04 21:49
>132
ふむふむ、自分はまだGraphユニットとCrtユニットを完全に理解していなかった
ようです。サンプルコードを希望します。

自分はPC-9800シリーズ用のTP6プロフェッショナル版をもっていますが、
引っ越しのどさくさでソフトはあれど、マニュアルをすべて無くしてしまったのです。
TP6のマニュアルに書かれていたクラスの概念はとても分かりやすかっただけに、
すご〜〜〜〜く、残念です。

だれかGraphユニットとCrtユニットの詳しい解説をサンプルを使って説明して
くれませんか!!
さて、>>134の方法で作成した場合、ソースは dprの拡張子となっています。

Delphi IDEを使わない方法を説明します。

まず メモ帳でも好きなエディタでも、 ファイル名.pas としてファイルを作成し
begin
writeln('こんにちは');
end.
と3行入力し、保存して下さい。
コマンドラインから
 DCC32 -CC ファイル名.pas として改行すれば
ファイル名.exeが作成されます
uses を使わない場合に使えるのは system unit の関数だけです

uses SysUtils ;が 追加された状態では、abort; Ansi/Unicode文字列処理や時間などの関数が追加されます



コンソールアプリであっても、グラフィック画面を扱いたくなります
Windowsの場合、コンソールにグラフィックを表示する事は出来ません。
そこで、別窓を出してグラフィックを出すか
あるいは、BMPファイルを作成して後でビュアーで見るという方法が簡単です

Delphiのフォーム機能をグラフィック画面としてコンソールアプリから使う方法を説明します

まずは、IDEからコンソールアプリを作成した直後
新規作成でフォームを作成して下さい

そして以下のように入力して実行してみて下さい

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Forms,//<----この行を追加
Unit1 in 'Unit1.pas' {Form1};

begin
Form1:= TForm1.Create(nil); //<<--この行以下を追加
Form1.Show;
Form1.Canvas.Ellipse(20,20,100,100);//円の描画
Form1.Caption:= 'こんにちは';
readln;
end.

実行すると、コンソールと同時にタイトルがこんにちは となった フォームが表示された筈です
このフォームはクリックに応答しませんし、他の窓に隠れると再表示もされません
が、とりあえずこれで遊ぶには十分に便利な筈です

140124:02/02/04 22:42
>>135
>TP6のマニュアルに書かれていたクラスの概念はとても分かりやすかっただけに、
おお、同意。なんか執筆者のすごい熱意が感じられる文章だった。

Crtユニットを使って日本語を出力する例。
TP5.5、Win95のDOSプロンプトにて確認しました。JPモードで実行して下さい。

program test;
uses Crt;
begin
  DirectVideo := False;
  GotoXY(30,10);
  TextColor(Red);
  Write('こんにちは');
end.

2バイト目が'のコード番号と一致するような日本語文字を文字列中に入れる場合には注意。
コンパイラがその'を文字列の終わりと認識するのを防ぐため、'を一つ追加してやる必要がある。
141デフォルトの名無しさん:02/02/04 22:43
ターボパスカルって、いまC#作ってる人と同じ人が作ったの?
142動物アイゴー協会:02/02/04 22:47
あらいぐまパスカルとかパトラッシュ思い出すんだけど。
さて、>>139の方法はあまりにも無理やりで作法としてよくありません。
そこで、コンソールアプリからBMPファイルを作成して表示させる方法を説明します

まず、新規作成でコンソールアプリを新しく作った後

uses
windows, //WindowsのAPIを使います
ShellApi, //ShellExecuteを使う為に
Graphics, //TBitMapを使う為に
SysUtils;
var bmp:TBitmap;
begin
 bmp:=TBitmap.Create;
 with bmp do try
  Width :=100;
  Height:=100;
  PixelFormat:= pf1bit;
  Canvas.Ellipse(1,1,100,100);//円を描く
  Canvas.TextOut(5,5,'こんにちは');
  SaveToFile('temp.bmp');
 finally free;end;
 ShellExecute(0,'Open','temp.bmp',nil,nil,SW_SHOW);
end.
として実行してみて下さい
このコードはコンソールを使用していませんから、コンソールアプリである必要もありませんから
{$APPTYPE CONSOLE} も取り去って大丈夫です
>>139 の方法がなぜ良くないかをまず説明します

 Windowsでは複数の窓があるように見せていますが、実際の表示デバイスはせいぜい1つです
 他の窓に隠された部分が また表示されるのは、アプリケーションが努力しなければなりません
 その為の仕掛けをメッセージループと呼びます
 窓はメッセージを受信する仕掛けをもち、再描画しろというメッセージにしたがって画面を自分で
 描くわけです。
また、キーボードが押された、マウスが押されたもメッセージにより処理されます。
Delphiでは application.ProcessMessages; で明示的にそのメッセージループを呼び出す事も
出来ます。コンソールアプリでapplication.ProcessMessages;を定期的に呼び出せば、作成した
フォームはマウスを受け付ける事が出来るようになります。が、それをしても >>139のように描画
処理をベタに書いたのでは 他の窓に隠れると2度と表示出来ない事にかわりはありません。
この部分をイベント駆動にしなければならないのです。
 それがフォームにある OnPaintイベントです。




>>143 のコードを説明しょうと思いましたが、
 Delphi6のIDE上で F1を押せば知りたい情報は殆ど出て来る筈です

bmp.PixelFormat:= pf1bit; はモノクロビットマップを作るという意味になります
その他の多色形式はヘルプを見て下さい


ShellExecuteは 作成した temp.bmpをそのパソコンに設定された方法で
  開くためのAPIです

円以外のグラフィック描画命令は TCanvas でヘルプを見て下さい
線の色の設定や線の太さは Canvas.Pen で設定します
面の 〜 は Canvas.Brush で行います
文字の〜は Canvas.Fontで行います