1

プログラムのキャプションに、プログラムがどのように準拠したかを示したいと思います。最も重要なのは、コンパイラの最適化がオンかオフかを示すことです。

(範囲チェックやこのような他のものも表示するのは興味深いですが、主にコンパイラの最適化に興味があります)。

それを行う方法はありますか?


Arioch の回答に基づいてすぐに使用できる関数:

function CompilerOptimization: Boolean;  { Importan note: $O+ has a local scope, therefore, the result of the function reflects only the optimization state at that specific source code location. }
begin
 {$IfOpt O+}
 Result:= TRUE;
 {$Else}
 Result:= FALSE;
 {$EndIf}
end;

function CompilerOptimizationS: String;
begin
 Result:= 'Compiler optimization is ' +
 {$IfOpt O+}
 'enabled'
 {$Else}
 'disabled'
 {$EndIf}
end;

重要: コードの断片を最適化するために {$O} スイッチを使用している場合は、このようなサブ関数として使用する必要があります。それ以外の場合は、(プロジェクト オプションで) グローバル スイッチのみを使用する場合、通常の (宣言された) 関数。

// {$O+} or {$O-}
procedure TFrmTest.FormCreate(Sender: TObject);

 function CompilerOptimizationS: String;
 begin
  Result:= 'Compiler optimization is ' +
  {$IfOpt O+}
  'enabled'
  {$Else}
  'disabled'
  {$EndIf}
 end;

begin
 ///...more code here
 Caption:= 'Version: '+ GerVerStr+ ' '+ CompilerOptimizationS+ etc+ etc;
end;
4

1 に答える 1

6
ShowMessage(' Optimization is ' +
{$IfOpt O+}
'enabled'
{$Else}
'disabled'
{$EndIf}
);

PS。ドキュメンテーション... Google で「Delphi IfOpt」にアクセスすると、次のような多くのリンクが表示されます。

PPS。gammatesterは、「{$O+} にはローカル スコープがあるため、メッセージ/キャプションはその特定のソース コードの場所での最適化状態のみを反映している」という点で完全に正しいです。

于 2013-10-31T13:46:40.113 に答える