「Delphi & C++ Builder即戦力コンポーネントライブラリ」で紹介しているコンポーネントのDelphi 6対応版はDelphi 7でも動作します.(Delphi 6対応版はこちら)
ただし,既存のプロジェクトをDelphi 7でコンパイルすると,ポインタを使っている箇所で多くの警告が出ます.
この警告はMicrosoft 社の .NET プラットフォームの関連で出るものです.
本コンポーネントは.NETに対応していないため,以下のいずれかの方法で警告をなくしてください.
1. IDE の[プロジェクト|オプション|コンパイラメッセージ]ページの最後にある
安全でない型
安全でないコード
安全でないタイプキャスト
のチェックを外す.
アプリケーションでポインタを使っている部分でも,警告が出るため,これが最も簡単な方法だと思います.
2. コンパイラコマンドラインスイッチ
(dcc32 -W-UNSAFE_TYPE -W-UNSAFE_CODE -W-UNSAFE_CAST)
3. 各ソースの最初の方(interfaceの後の方)に以下のコンパイラ指令を記述する.
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF RTLVersion >= 15.00}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
{$IFEND}
{$ENDIF}
また,イベントの引数でPChar型を使っているものがPAnsiCharとして登録されるようになったため,通信コンポーネントのOnCommReceiveイベント部分で修正が必要になります.
たとえば,IDEが生成したアプリケーションのOnCommReceiveイベントを以下のようにすれば,Delphi 3〜Delphi 7に対応できます.
{$IFNDEF VER100} // Delphi 4以降
{$IFNDEF CONDITIONALEXPRESSIONS} // Delphi 5
procedure Comm1CommReceive(Sender: TComm; Buffer: PChar; Size: Cardinal);
{$ELSE} // Delphi 6以降
{$IF RTLVersion < 15.00} // Delphi 6
procedure Comm1CommReceive(Sender: TComm; Buffer: PChar; Size: Cardinal);
{$ELSEIF True} // Delphi 7以降
procedure Comm1CommReceive(Sender: TComm; Buffer: PAnsiChar; Size: Cardinal);
{$IFEND}
{$ENDIF}
{$ELSE} // Delphi 3
procedure Comm1CommReceive(Sender: TComm; Buffer: PChar; Size: Integer);
{$ENDIF}
「Delphi&C++Builder即戦力コンポーネントライブラリ」のページへ
CQ出版社のトップページへ戻る