HOME > Delphi > コンソール > MidStr

MidStr


【ファイル名】MidStr
【バージョン】Ver 1.0.0
【作成日】2017年06月26日
【動作確認】EmbarcaderoR Delphi Starter 10.2(Windows 10 32ビット)
【説明】開始文字から指定した文字の数の文字列を表示します。
【書式】MidStr.exe  テキストファイル名  開始文字  [文字の数=1024]
    文字の数を省略した場合は1024です。

MidStr.dpr

program MidStr;

{$APPTYPE CONSOLE}

{$R *.res}



uses
  System.SysUtils, System.StrUtils;

// ヘルプの表示
procedure Help;
begin
  Writeln('【書式】MidStr.exe  テキストファイル名  開始文字  [文字の数=1024]');
  Writeln('【機能】開始文字から指定した文字の数の文字列を表示します。');
  Writeln('【補足】文字の数を省略した場合は1024です。');
end;

var
  F: TextFile;
  Buf: String;
  Start: Integer;
  MaxCnt: Integer;
begin
  try
    // ヘルプの表示
    if (ParamCount > 0) and (ParamStr(1) = '/?') then begin
      Help;
      Exit;
    end;

    // パラメータ不足の場合
    if ParamCount < 2 then begin
      Writeln('パラメータが不足してます。');
      Writeln('');
      Help;
      Halt(1);
    end;

    // ファイルが存在するか?
    if not FileExists(ParamStr(1)) then begin
      Writeln('ファイル ' + ParamStr(1) + ' が見つかりません。');
      Writeln('');
      Help;
      Halt(1);
    end;

    // 開始文字のチェック
    if ParamCount > 1 then begin
      if TryStrToInt(ParamStr(2), Start) = False then
      begin
        Writeln(ParamStr(2) + ' は開始文字の数として正しくありません。');
        Writeln('');
        Help;
        Halt(1);
      end;

      if Start < 1 then begin
        Writeln(ParamStr(2) + ' は開始文字の数として正しくありません。');
        Writeln('');
        Help;
        Halt(1);
      end;
    end;

    // 文字の数のチェック
    MaxCnt := 1024;
    if ParamCount > 2 then begin
      if TryStrToInt(ParamStr(3), MaxCnt) = False then
      begin
        Writeln(ParamStr(3) + ' は文字の数として正しくありません。');
        Writeln('');
        Help;
        Halt(1);
      end;

      if MaxCnt < 1 then begin
        Writeln(ParamStr(3) + ' は文字の数として正しくありません。');
        Writeln('');
        Help;
        Halt(1);
      end;
    end;

    // ファイルを読み、表示します。
    AssignFile(F, ParamStr(1));
    Reset(F);
    try
      while not Eof(F) do begin
        Readln(F, Buf);
        Writeln(System.StrUtils.MidStr(Buf, Start, MaxCnt));
      end;
    finally
      CloseFile(F);
    end;

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

このページの上