16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:Pascalコンパイラバージョン判断"
この発言は #00665 佐藤 充男 さんのPascalコンパイラバージョン判断 に対するコメントです
佐藤 充男さん、こんにちは。 かとちんです。
☆説明
Inside Delphi で紹介されていた扱いやすくする方法を掛け合わせた共通
インクルードファイルです。
VER?? 定数だけで複雑なバージョン互換判断のコーディングが辛いので
作成しました。$IFDEF,$IFNDEFで、大小比較とコンパイル定数を数値扱い
できれば、こんな苦労は無いんですが。せめて AND が効けばなぁ。
☆補足
Delphi 3 / 4 / 5 でテスト(1, 2, 3.1 でどなたか試して下さい。^^;)
C++Builder の人は 佐藤さんが尽力して下さったサンプルを元に参考に
して作成されると良いと思います。
☆サンプルソース(DelphiVer.inc で保存)
{-------------------------------------------------------------------
概要: Delphi Versionによる違いを吸収するコンパイル定数定義
初版:
1998/09/27 Delphi? 定数(あるバージョン以降)定義
変更:
1999/12/16 Delphi?Only定数(バージョン固有)定義
Delphi?-?定数(あるバージョンからあるバージョンまで)定義
※注意点: 3.1は不明(持っていない.佐藤さんの解説では3と同じ)
C++Builderは不明(持っていないため)
---------------------------------------------------------------------}
{$IFDEF VER80}
{$DEFINE Delphi1Only}
{$DEFINE Delphi1}
// バージョン有効範囲
{$DEFINE Delphi1-2}
{$DEFINE Delphi1-3}
{$DEFINE Delphi1-4}
{$DEFINE Delphi1-5}
{$ENDIF}
{$IFDEF VER90}
{$DEFINE Delphi2Only}
{$DEFINE Delphi1}
{$DEFINE Delphi2}
// バージョン有効範囲
{$DEFINE Delphi1-2}
{$DEFINE Delphi1-3}
{$DEFINE Delphi1-4}
{$DEFINE Delphi1-5}
{$DEFINE Delphi2-3}
{$DEFINE Delphi2-4}
{$DEFINE Delphi2-5}
{$ENDIF}
{$IFDEF VER100}
{$DEFINE Delphi3Only}
{$DEFINE Delphi1}
{$DEFINE Delphi2}
{$DEFINE Delphi3}
// バージョン有効範囲
{$DEFINE Delphi1-3}
{$DEFINE Delphi1-4}
{$DEFINE Delphi1-5}
{$DEFINE Delphi2-3}
{$DEFINE Delphi2-4}
{$DEFINE Delphi2-5}
{$DEFINE Delphi3-4}
{$DEFINE Delphi3-5}
{$ENDIF}
{$IFDEF VER110}
{$DEFINE Delphi3Only}
{$DEFINE Delphi1}
{$DEFINE Delphi2}
{$DEFINE Delphi3}
// バージョン有効範囲
{$DEFINE Delphi1-3}
{$DEFINE Delphi1-4}
{$DEFINE Delphi1-5}
{$DEFINE Delphi2-3}
{$DEFINE Delphi2-4}
{$DEFINE Delphi2-5}
{$DEFINE Delphi3-4}
{$DEFINE Delphi3-5}
{$ENDIF}
{$IFDEF VER120}
{$DEFINE Delphi4Only}
{$DEFINE Delphi1}
{$DEFINE Delphi2}
{$DEFINE Delphi3}
{$DEFINE Delphi4}
// バージョン有効範囲
{$DEFINE Delphi1-4}
{$DEFINE Delphi1-5}
{$DEFINE Delphi2-4}
{$DEFINE Delphi2-5}
{$DEFINE Delphi3-4}
{$DEFINE Delphi3-5}
{$DEFINE Delphi4-5}
{$ENDIF}
{$IFDEF VER130}
{$DEFINE Delphi5Only}
{$DEFINE Delphi1}
{$DEFINE Delphi2}
{$DEFINE Delphi3}
{$DEFINE Delphi4}
{$DEFINE Delphi5}
// バージョン有効範囲
{$DEFINE Delphi1-5}
{$DEFINE Delphi2-5}
{$DEFINE Delphi3-5}
{$DEFINE Delphi4-5}
{$ENDIF}
☆使用例
{$INCLUDE DelphiVer.inc}
{$IFDEF Delphi1-3}
WM_GETOBJECT = $003D;
WM_MENURBUTTONUP = $0122;
WM_MENUDRAG = $0123;
WM_MENUGETOBJECT = $0124;
WM_UNINITMENUPOPUP = $0125;
WM_MENUCOMMAND = $0126;
WM_CHANGEUISTATE = $0127;
WM_UPDATEUISTATE = $0128;
WM_QUERYUISTATE = $0129;
WM_IME_REQUEST = $0288;
{$ENDIF}
TMsgTraceControl = class(TCustomControl)
published
{$IFDEF Delphi4} // Delphi4以降
property Anchors;
property BiDiMode;
property Constraints;
property DragKind;
property ParentBiDiMode;
property OnEndDock;
property OnStartDock;
{$ENDIF}
end;
>1つのソースで全バージョンをカバーするコンポーネントはないと思います
#え、そうなんですか。私はなるべくカバーしていますが、だめですかね?
#可読性に欠けるけど、ソースのバージョン管理に加えてDelphiのバージョン
#までソースを持つと訳分かんなくなっちゃって。(;_;)
⌒ ⌒ 1999/12/24(金) 午後 05:12 かとちん(JDX06162)
◎ ◎ mailto:tarochan.kato@nifty.ne.jp
∋ ▽ ∈ http://pc2.techno-ware-unet.ocn.ne.jp/~kato/
Original document by かとちん 氏 ID:(JDX06162)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|