Help us understand the problem. What is going on with this article?

Delphiで「大石泉すき」を標準出力する

この記事は 「大石泉すき」アドベントカレンダー 6日目の記事となります。
6日目は、GUIアプリケーションの開発環境であるDelphiであえて標準出力してみます。

概要

以下のような方を対象にした内容になります。

  • 大石泉P
  • 大石泉に興味がある人
  • Delphiでプログラミングを始めたいと思っている人

記事内のコードは以下の環境で実行しています。

OS: Windows 10
Delphiバージョン: 10.3 Community Edition

Delphiについて

かつてWindows用のデスクトップアプリケーション開発で勇名を馳せたGUI開発環境&言語です。
幾多の変遷を経て、現在ではAndroid、iOSのアプリ開発も行えるようになっています。
そして、制限はあるものの無料で利用することもできます。
無料版は Delphi 10.3 Community Edition からダウンロードできるので是非お試しあれ。

Delphiで標準出力

プロジェクト設定

Delphiを起動したら ファイル > 新規作成 > コンソールアプリケーション でコンソールアプリケーションの雛型を作成します。

Delphi_プロジェクト設定.png

プロジェクト > オプション メニューからビルド設定を変更します。
初期状態では プロジェクトルート/Win32/Debug ディレクトリ以下にEXEが出力されます。
ここでは分かりやすくするためにプロジェクトルート以下に出力されるように変更しています。

Delphi_出力先設定.png

プロジェクトの基本設定を終えたら、標準出力の実装です。
プロジェクトファイル(拡張子が dproj )に実装します。
プロジェクトファイルは他の言語のmain関数のようなものととらえてください。

Writeln 命令に引数で文字列を渡せば標準出力に文字列の内容が出力されます。
Ctrl + F9 でコンパイルしてEXEを出力します。

program BitPerformer;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

begin
  Writeln('大石泉すき');
end.

プロジェクトのルートディレクトリ直下にEXEファイルが出力されます。
コマンドプロンプトにて dir コマンドで確認してください。

EXE出力.png

EXEファイル名を入力すると 大石泉すき と出力されます。

出力.png

引数で指定した回数だけ出力する

このままでは面白味がないし、 ビット・パフォーマー とは言えないので少しコードを追加します。
コマンドラインアプリケーションと言えば引数での挙動の変化が醍醐味なので引数で指定した回数だけ出力するように変更します。

program BitPerformer;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var
  n, i: Integer;

begin
  if ParamCount >= 1 then begin
    n := StrToIntDef(ParamStr(1), 1);
    if n > 5 then begin
      n := 5;
    end;
  end else begin
    n := 1;
  end;

  for i := 1 to n do begin
    Writeln('大石泉すき');
  end;
end.

1~5の値を指定するとその回数分だけ、6以上の値を指定した場合は5回、引数が無い、または数値以外の文字列を指定した場合は1回だけ出力するという実装です。
Delphiの言語仕様を知っている人は少ないと思うので以下にポイントとなるワードの解説を記しました。

ParamCount: 引数の数
ParamStr: 引数を格納したリスト(インデックス0はアプリケーション名になる)
StrToIntDef: 渡された文字列を整数に変換する、変換できない場合は指定した値を返す

以下が実行結果になります。

複数回出力.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした