4

Delphiを使用して、整数でFormat関数を使用するときに符号出力を強制する方法はありますか?正の数の場合は「+」(プラス)プレフィックスを使用し、負の数の場合は「-」(マイナス)プレフィックスを使用します。私の場合、ゼロの処理は重要ではありません(符号プレフィックスを付けることも、付けないこともできます)。

各フォーマットおよびif-then-elseソリューションにフォーマットヘルパー関数を使用することは避けたいと思います。

4

1 に答える 1

11

Davidがすでにコメントしたように、このFormat関数はその目的にフォーマット指定子を提供しません。

本当に単一行のソリューションが必要な場合は、次のようなものを使用できると思います。

uses
  Math;
const
  Signs: array[TValueSign] of String = ('', '', '+');
var
  I: Integer;
begin
  I := 100;
  Label1.Caption := Format('%s%d', [Signs[Sign(I)], I]);  // Output: +100
  I := -100;
  Label2.Caption := Format('%s%d', [Signs[Sign(I)], I]);  // Output: -100

しかし、私は別の(ライブラリ)ルーチンを作成することを好みます:

function FormatInt(Value: Integer): String;
begin
  if Value > 0 then
    Result := '+' + IntToStr(Value)
  else
    Result := IntToStr(Value);
end;
于 2012-07-02T11:21:17.597 に答える