Delphi&C++Builder 即戦力コンポーネントライブラリ
Delphi7対応のための関連ファイル


   「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出版社のトップページへ戻る


Copyright 1997-2024 CQ Publishing Co.,Ltd.

sales@cqpub.co.jp