Reported by Eric Maddox; checked by Reinier Sterkenburg
以下のコードは、フォーム(またはデータモジュール)のクラス定義の解析中のエラーを回避するサンプルです。このエラーに気付いた時、私はデータモジュールの子クラスを変更するために IFDEF を使おうとしていました。IFDEF の中にセミコロンを追加するという対処は、決して正しいものではありません。
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Unit2;
type
{$IFDEF MyCompilerDirective}
TForm3 = class(TForm)
{$Else}
{$IFDEF HandleParserError} ; {ここがコンパイルされることはありません。これは回避策です}{$ENDIF}
TForm3 = class(TForm2)
{$EndIF}
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.DFM}
end.
- Delphi 4 と 5 では、": が必要な場所に = があります" が発生します。
- Delhpi 2 と 3 では、二つ目の宣言で "不正なフィールド定義" が発生します。
これは、あらゆるフォームとデータモジュールの子フォームまたは子データモジュールを変更するのに IFDEF を使用する場合に影響します。
この問題はフォームとデータモジュールの場合にのみ発生します。
この回避方法は Delphi 4 でのみ正しく動作します(Delphi 3 または Delphi 2 では動作しません)。
|