a2

Similar documents
20th Embarcadero Developer Camp

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

「Delphiのマイグレーションを行うのであれば、これだけは知っておこう!」

MxLogonサーバサイドツールキット用UI


10th Developer Camp - B5

25th Developer Camp

Oracle SQL Developer Data Modeler

HULFT-DataMagic Ver2.2.0 製品対応OS

17th Embarcadero Developer Camp

Visual Basic Oracle Database 11 Release 1

「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック

セットアップカード

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 8.0

Delphi / C++Builderユーザーのためのオープンソースコンポーネントを使ったDBアクセス

DBMSリポジトリへの移行マニュアル

データベースアプリケーション構築技法 Delphi、C++Builderによるメンテナンス性を考慮した開発

24th Embarcadero Developer Camp

25th Developer Camp

ミガロ.製品 最新情報

Oracle Database Clientリリース・ノート, 10gリリース1( ) for Microsoft Windows

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

スライド 1

CodeGear Developer Camp

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

Install / Protect / Monetize InstallShield 全機能 データシート プロフェッショナルなインストールの作成 PREMIER PROFESSIONAL EXPRESS MSIX パッケージ サポート フレームワークをサポート Windows Installer(

14th Developer Camp

21st Embarcadero Developer Camp T9

intra-mart EX申請システム version.7.2 事前チェック

Android Layout SDK プログラミング マニュアル

mySQLの利用

Microsoft Word - J-jdev_dba_db_developers.doc

intra-mart FormatCreator Version6.1

21st Embarcadero Developers Camp T3

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

intra-mart EX申請システム version.5.3 PDFオプション リリースノート

VB実用Ⅲ⑩ フリーデータベースⅡ

Microsoft Word - JDBC-ODBCu691cu8a3c docx

intra-mart EX申請システム version.7.2 PDFオプション リリースノート

Microsoft Word - Writing Windows Installer's DLL.doc

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

COBOL EE開発環境 ご紹介資料

データベースアクセス

BOM for Windows Ver

LDAP Manager SupportList

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

MVP for VB が語る C# 入門

Microsoft Word - JDBC検証 docx

2. バージョンアップ内容 intra-mart WebPlatform/AppFramework Ver.7.1 および Ver.7.2 に対応いたしました SAP JCo 3.0.x に対応いたしました 3. 製品概要 IM-ERP リアルコネクトは SAP システム内のデータをリアルタイムに取

Microsoft Word - oo4o_extra.doc

2. 製品概要 IM-ERP リアルコネクトは SAP システム内のデータをリアルタイムに取得 更新するための API SAP リアルタイム連携 API を提供いたします またこれらの API を利用した業務テンプレートが同梱されています 各機能の詳細や設定方法に関しては 各マニュアルまたはセットア

目次 1 はじめに 本文書の概要 PVF ソフトウェアと VISUAL STUDIO PVF ソフトウェアの種類 MICROSOFT VISUAL STUDIO の日本語化について VISUAL STUDIO

Microsoft Word - tutorial3-dbreverse.docx

InstallShield FAQ < 独自の InstallShield 前提条件を作成する > 注 ) このドキュメントは InstallShield 2014 Premier Edition を基に作成しています InstallShield 2014 以外のバージョンでは設定名などが異なる場合

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! -

報道関係者各位 プレスリリース 2019 年 01 月 15 日 株式会社ネオジャパン グループウェア desknet's NEO バージョン 5.2 を 1 月 15 日に提供開始 ~ 業務アプリ作成ツール AppSuite との連携を強化 他にも AppSuite 連携 API 公開など多数の機

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

開発ツールのコラボレーション機能を検証する

AWS Deck Template

利用者

DrSumEA_ServerC_本文.indd

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

本セミナーの目的 Firebird の利点を最も有効に利用できる開 発環境は Delphi です 理由その 1 ミドルウェアの充実 理由その 2 データベース対応機能の充実 理由その 3 国内 海外での豊富な実績の蓄積

『テクノス』V2プログラムインストール説明書

Windows開発者のためのFireMonkeyモバイル開発入門

Delphi/400ユーザーのための『Visual Query・Simple Transfer/400』ご紹介

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 9.0

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス

BricRobo V1.5 インストールマニュアル

ログイン時の ID パスワードは マイページ と同一です インストール前の状態の場合 ログイン後に表示されるページの ライセンス一覧 に該当製品シリアルの表示はされません インストール完了後 ライセンス管理ページご利用シリアルの一覧が表示されます 以上でライセンス管理ページの作成は完了です なお セ

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB


Enterprise Architect 12.0 機能ガイド

intra-mart EX申請システム version.5.4 提出依頼機能 リリースノート

<4D F736F F D CA08CC082AA B835E B D C58B9194DB82B382EA82DC82B582BD2E646F63>

今さら聞けない!? Oracle入門 ~前編~

Transcription:

A2 Delphi テクニカルセッション Delphi で作るデータベースツール その開発のポイントは 2014 年 11 月 11 日田中芳起 Ver.1.0.2 1

自己紹介 名前 : 田中芳起 ( たなかよしき ) 中堅 SIer でパッケージシステムの開発 / プロジェクト管理 / 品質管理等の仕事に従事 26th デブキャンプで はじめての FireDAC の講師を担当 Delphi とは 1.0US 版からの付き合い ホームページ ブログ Facebook : http://www.avsoft.jp/ : http://avsoft.typepad.jp/blog/ : https://www.facebook.com/yoshiki.tanaka.942/ : https://www.facebook.com/visualnavi 2

Agenda Introduction DB-Engines による調査結果 Visual NAVI のご紹介 おもな機能 動作環境 デモ Oracle Database の歴史 Oracle 社が提供するミドルウェア Oracle 接続の仕組み BDE(Borland Database Engine) の構造 BDE の現状 ネイティブ接続 リポジトリを使う Frame を使う 3

Agenda The Next Steps 今後の進化 マルチデータベースのサポート ソフトウェア構造の根本的な 直し 無謀にも VCL から FireMonkey(FMX) フォームを呼び出す DLL 内で MDI 子フォームを生成する FireMonkey の状態保存 FireMonkey でクリップボードを扱う コア技術は コールバック関数! コールバック関数の体系 コールバック関数の登録 コールバック関数の呼出 SQL の実 Visual NAVI の SQL エディタを起動 実 する パイプを使ってメッセージを横取りする! デモ 4

5

DB-Engines による調査結果 データベースソフトウェアの普及度や 気を インターネット上の求 情報や職務経歴上での経験 および検索エンジンや SNS での情報量を元に毎月作成し公開されている http://db-engines.com/en/ 1600 1400 3 強!? 1200 1000 800 600 400 200 25 位 40 位 0 Oracle MySQL MS SQL Server PostgreSQL MongoDB DB2 MS Access SQLite Sybase ASE Firebird Interbase 6

Visual NAVI のご紹介 コンセプトは Easy to use!( 使いやすさ ) Oracle 専用の統合型開発支援ツールアプリケーション開発に必要な機能やデータベース管理に必要な機能を統合 ネイティブ接続 Oracle との接続は OCI (Oracle Call Interface) を使用 接続用のミドルウェアは 切必要とせず Oracle のクライアント環境がインストールされている端末であれば 実 モジュールのみで動作 GUI (Graphical User Interface) による操作オブジェクトの作成 SQL の実 などを GUI 上で操作することができ 開発効率が 幅に向上 7

おもな機能 DBA 向け機能各種データベース情報の表示表領域 ユーザー等の新規作成 / 類似作成 / 変更 / 削除 高機能な SQL 実 機能 SQL 実 (DDL DML) SQL 文の解析 エラー個所 ( 位置 ) の表示バインド変数を使用した SQL の実 DBMS_OUTPUT パッケージを使用したデバッグ機能実 計画のグラフィカル表示 SQL のバッチ実 スキーマ オブジェクトの管理機能 GUI によるオブジェクトの新規作成 / 類似作成 / 変更 / 削除オブジェクトの定義情報 ソース データをリバース表示オブジェクト 覧表 テーブル ビューの仕様書出 ストアドプログラムの作成 編集 実 専用エディタによるストアドプログラムの作成 / コンパイル / 実 テーブル ビューの表示 編集機能 の編集 / 追加 / 削除 / 全 削除各種形式 (XML/HTML/Excel/CSV ) でのデータ出 8

動作環境 パソコンの動作環境 Windows 日本語版 Vista/7/8(8.1)(32bit/64bit 共に可 ) オラクルのバージョン /Excel のバージョンについて Oracle クライアントがインストール済であること Oracle クライアントと接続する Oracle サーバが以下のバージョンであること Oracle 9.0.1 12.1.0(64bit Oracle には未対応 ) 文字コードは SJIS のみ (UniCode は未対応 ) 仕様書出 Excel 形式でデータを出 する場合は Microsoft Excel(97 以降 ) がインストール済みであること 9

Oracle Database の歴史 cloud Oracle 12c 開発着手 Oracle9i Oracle10g/11g Oracle8i Oracle8 Oracle V7 Oracle V6 1988 1992 1997 1999 2001 2003 2013 10

Oracle 接続の仕組み tnsnames.ora ORCL = ネットサービス名 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = host1)(port = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ネットワーク定義ファイル リスナー host1 Connect ユーザー名 / パスワード @ORCL 11

Oracle 社が提供するミドルウェア C コンパイラ COBOL コンパイラ Visual Basic/ASP/Access.NET Pro*C Pro*COBOL Oracle Object for OLE OLE DB ODBC.NET Bridge ODP.NET クライアント側 OLE DB Oracle Net Services ( 旧 Net8 SQL*NET) ODBC サーバー側 Oracle Net Services ( 旧 Net8 SQL*NET) OO4O,OLE DB,ODBC,ODP.NET は ODAC(Oracle Data Access Component) として提供されています 12

BDE(Borland Database Engine) の構造 Paradox for Windows dbase for Windows Borland C++ Delphi アプリケーション BDE API (IDAPI) BDE (Borland Database Engine) SQL Link ドライバ Paradox Driver dbase Driver ASCII Oracle, MS SQL Server InterBase, Informix, Sybase Driver ODBC Driver TCP/IP, SPX/IPX Paradox dbase Text RDBMS Oracle/MS SQL Server/ InterBase/Informix/Sybase ローカルデータベース 13

BDE の現状 BDE は 2002 年に開発 保守が終了不具合があっても修正パッチの提供はされていない BDE の最新バージョンは 5.2 Delphi 7/C++Builder 6 以降 BDE のバージョンは更新されていない現在の Delphi/C++Builder 製品に付属する BDE は あくまで過去の資産保守用 動作保証プラットフォームは Windows XP まで Windows XP 以降にリリースされた OS バージョンは動作保証がされていない ( 例えば Windows Vista/7/8 Windows2003/2008 Server など ) RAD Studio XE7 では BDE がインストールされないしかし 別途インストーラがダウンロードできます http://support.embarcadero.com/jp/print/44077 14

ネイティブ接続 Delphi 用 OCI*1 ラッパーコンポーネントを開発 ODBC ADO OO4O BDE 等は 切不要 Oracle のすべての機能が使用可能 処理が高速 Visual NAVI Visual NAVI VCL TQuery, Ttable OCI ラッパーコンポーネント BDE SQL Link OCI.dll Oracle Net Services この部分が不要! OCI.dll Oracle Net Services RDBMS 15 *1 OCI(Oracle Call Interface) は Oracle データベースが提供する API (Application Program Interface) の 1 つです

リポジトリを使う リポジトリとは? Delphi のソフトウェア資産の再利用のための機能で Form 等で共通した機能を共有するのために使用する また チームで開発する場合はテンプレートとしてリポジトリの共有が える frmbaseclassmdiform を継承 Form 情報の読込 / 保存 TaskBar の追加 / 削除 : 16

Frame を使う フレーム (Frame) とは? Form と同じように 他のコンポーネントのコンテナ 複数のコンポーネントをまとめて配置し 部品化することができる 17

18

今後の進化 マルチデータベースのサポートあらゆるデータベースのサポート (Oracle MS SQL Server MySQL ) ソフトウェア構造の根本的な 直しソフトウェア資産の流用と拡張性への対応 各種プログラミング言語への対応 Delphi 以外の言語への対応 ( 課題は bool int string ) 64 ビット化データベースも急激に 32 ビットから 64 ビットにシフトしている DataSnap による多層化インフラ プラットフォームの変化に柔軟に対応 マルチデバイスへの対応 Mac スマートディバイス等の普及拡 に対応 多言語化グローバルな開発環境への対応 ( 英語 中国語 ) 19

マルチデータベースのサポート FireDAC がサポートする主な DBMS のサポート 第 段として Oracle 続いて MS-SQL Server MySQL をリリース予定 20

ソフトウェア構造の根本的な 直し (Before) Visual NAVI SDI or MDI Form & Units Form & Units Oracle DataModule DLL (Plugin) SDI Plugin - interface Form & Units 21

ソフトウェア構造の根本的な 直し (After) Visual NAVI DLL (Action) SDI or MDI Oracle DataModule Form & Units Action Manager Form & Units Form & Units 22

無謀にも VCL から FireMonkey(FMX) フォームを呼び出す FireMonkey フォームの動的呼出 type TShowFMXForm = procedure stdcall; procedure TForm1.btnShowFMXFormClick(Sender: TObject); var ShowFMXForm: TShowFMXForm; DLLHandle: THandle; begin DLLHandle := LoadLibrary('VCLdll.dll'); if DLLHandle <> 0 then begin @ShowFMXForm := GetProcAddress(DLLHandle, 'ShowFMXForm'); if Assigned(ShowFMXForm) then ShowFMXForm(); FreeLibrary(DLLHandle); *1 *1 ライブラリの解放 (FreeLibrary 呼出 ) でダンマリ状態になる ( 正しく終了しない ) VCL(.exe/.dll) と FireMonkey(.dll/.exe) とをアプリ内で混在させることは想定されていない 詳細は次の QualityCentral(QC) を参照 [DLL developed with FireMonkey crash under FireMonkey app/ VCL app after FreeLibrary to unload the DLL] http://qc.embarcadero.com/wc/qcmain.aspx?d=123874 23

DLL 内で MDI 子フォームを生成する ポイントは DLL 内の Application と Screen の値を 呼出側の値と 致させる メインフォーム 子フォーム (DLL 側で生成 ) 実 時ライブラリを使っても実現できますが ここではレガシィなやり で実装します 作成した Form(Unit) をリポジトリとして登録しておくと クラス継承が容易となります 24

DLL 内で MDI 子フォームを生成する (DLL 側コードの抜粋 ) var SaveApplication: TApplication; SaveScreen: TScreen; procedure ShowChildForm(AApplication: TApplication; AScreen: TScreen); stdcall; begin if not Assigned(SaveApplication) then begin // Tapplication Tscreen のセーブ SaveApplication := Application; SaveScreen := Screen; // 親の Tapplication Tscreen をセット Application := AApplication; Screen := AScreen; frmchild := TfrmChild.Create(Application); initialization SaveApplication := nil; finalization // Tapplication Tscreen を元に戻す if Assigned(SaveApplication) then begin Application := SaveApplication; Screen := SaveScreen; 25

FireMonkey の状態保存 ( 保存 ) XE7 からアプリケーションの状態の保存 / 復帰機能が追加されています これにより 従来 INI ファイルで処理していたことが簡単に実現することができます procedure TForm1.FormSaveState(Sender: TObject); var BW: TBinaryWriter; begin SaveState.Stream.Clear; // 何かが編集されたときにのみ現在の状態が保存される // 何も変更されていない場合は 状態がこのように削除される if Edit1.Text.Length > 0 then begin // したテキストを Edit1 コントロールに保存する BW := TBinaryWriter.Create(SaveState.Stream); try BW.Write(Edit1.Text); BW.Write(Edit2.Text); *2 finally BW.Free; *1 *1 OnSaveState イベントに設定 *2 保存するコントロールを指定する 26

FireMonkey の状態保存 ( 復帰 ) uses System.IOUtils; procedure TForm1.FormCreate(Sender: TObject); var BR: TBinaryReader; begin SaveState.StoragePath := TPath.GetHomePath; if SaveState.Stream.Size > 0 then begin // 前に したテキストを Edit1 コントロールに回復する BR := TBinaryReader.Create(SaveState.Stream); try Edit1.Text := BR.ReadString; Edit2.Text := BR.ReadString; finally BR.Free; *2 *1 *1 保存先を指定 この場合はホームパス (C: Users < ユーザー名 > AppData Roaming) に保存される *2 読込むコントロールを指定する 27

FireMonkey でクリップボードを扱う uses FMX.Platform; // クリップボードへ文字列をコピーする procedure ClipboardAsString(Text: String); var ClipboardService: IFMXClipboardService; begin ClipboardService := IFMXClipboardService(TPlatformServices.Current.GetPlatformService(IFMXClipboardService)); ClipboardService.SetClipboard(text); // クリップボードから文字列を取得する function GetClipboardAsString: String; var ClipboardService: IFMXClipboardService; begin ClipboardService := IFMXClipboardService(TPlatformServices.Current.GetPlatformService(IFMXClipboardService)); Result := ClipboardService.GetClipboard.AsString; 以下を参照して下さい TPlatformServices : http://docwiki.embarcadero.com/libraries/xe7/ja/fmx.platform.tplatformservices IFMXClipboardService: http://docwiki.embarcadero.com/libraries/xe7/ja/fmx.platform.ifmxclipboardservice 28

コア技術は コールバック関数! コールバック関数とは? プログラム中で 呼び出し先の関数の実 中に実 されるように あらかじめ指定しておく関数 (IT 用語辞典より引用 ) Visual NAVI(Action Manager) DLL (Action) function バージョンの取得 SYS_Version SYS_Version 結果 2.08.835 29

30 コールバック関数の体系 関数名 SYSTEM info functions SYS_Version SYS_RootDir SYS_IniFileName : IDE functions IDE_Connected IDE_ConnectionInfo IDE_GetAppHandle : SQL functions SQL_Execute SQL_FieldCount SQL_Eof : Oracle functions ORA_Version ORA_OracleHome : 機能概要 Visual NAVI の各種情報を取得 バージョンを取得 起動 Dir を取得 環境設定ファイル名を取得 : IDE の情報を取得 DB 接続の有無を取得 (True: 接続済み ) DB 接続情報の取得 アプリケーションハンドル名を取得 : SQL の実 と結果の取得 SQL の実 項目 ( コンポーネント ) の数を取得 データセットの最後かどうかを取得 : Oracle の各種情報取得 処理の依頼 Oracle のバージョンを取得 Oracle-Home を取得 :

コールバック関数の登録 (Delphi) DLL 側で登録するコールバック関数を RegisterCallback 手続き内で定義をします Visual NAVI 起動時に 自動的にコールバック関数が登録される var // コールバック関数の定義 SYS_Version : function: PWideChar; stdcall; SYS_RootDir : function: PWideChar; stdcall; ORA_Version : function: PWideChar; stdcall; ORA_OracleHome: function: PWideChar; stdcall; : // コールバック関数の登録 procedure RegisterCallback(Index: Integer; Addr: Pointer); stdcall; begin case Index of 1: @SYS_Version := Addr; 2: @SYS_RootDir := Addr; : 91: @ORA_Version := Addr; 92: @ORA_OracleHome := Addr; : 31

コールバック関数の呼出 (Delphi) Visual NAVI 側から DLL の OnMenuClick を呼び出すと DLL 側で処理が実 される procedure OnMenuClick(Index: Integer); stdcall; begin case Index of 1: ShowLogonInfo; 2: ShowMessage(IntToStr(IDE_GetWindowType)); 3: IDE_CreateWindow(3, 'select * from tab', True); 5: ShowMessage(SYS_Version); 6: ShowMessage(SYS_RootDir); 7: ShowMessage(ORA_Version); 実 例 32

コールバック関数の登録 (VC++) DLL 側で登録するコールバック関数を RegisterCallback 手続き内で定義をします Visual NAVI 起動時に 自動的にコールバック関数が登録される // コールバック関数の定義 typedef wchar_t* (*TWcharCharPointerFnct)(); // type Callback function TWcharCharPointerFnct SYS_Version; // Callback function TWcharCharPointerFnct SYS_RootDir; // Callback function : // コールバック関数の登録 extern "C" void CALLBACK RegisterCallback(int Index, void *Addr) { switch (Index) { case 1: SYS_Version = (TWcharCharPointerFnct)Addr; break; case 2: SYS_RootDir = (TWcharCharPointerFnct)Addr; break; : } } 33

コールバック関数の呼出 (VC++) Visual NAVI 側から DLL の OnMenuClick を呼び出すと DLL 側で処理が実 される extern "C" void CALLBACK OnMenuClick(int Index) { switch (Index) { case 1: MessageBox(NULL, SYS_Version(), _T(" 確認 "), MB_OK); return; case 2: MessageBox(NULL, SYS_RootDir(), _T(" 確認 "), MB_OK); return; } } 実 例 34

SQL の実 次のソースコードは Oracle の データディクショナリビュー からユーザー 覧を取得するものです ( 赤字がコールバック関数 ) function GetAllUsers(UserList: TStrings): Boolean; var SQL: TStrings; ErrMessage: PWideChar; begin Result := False; SQL := TStringList.Create; try // SQL 文の編集 SQL.Clear; SQL.Add('/* Visual NAVI */ SELECT'); SQL.Add(' DISTINCT USERNAME'); SQL.Add('FROM'); SQL.Add(' sys.all_users'); SQL.Add('ORDER BY'); SQL.Add(' USERNAME'); // SQL の実 if (SQL_Execute(PWideChar(SQL.Text), ErrMessage) = 0) then begin // Items をクリア UserList.Clear; // ユーザー名を UserList に溜め込む while not SQL_Eof do begin UserList.Add(SQL_Field(0)); SQL_Next; Result := True; end else IDE_OutputEvents(2, ' ユーザ 覧取得 (SELECT)', ErrMessage); finally FreeAndNil(SQL); 35

Visual NAVI の SQL エディタを起動 実 する Visual NAVI 側から呼ばれた OnMenuClick 内で コールバック関数を実 する procedure OnMenuClick(Index: Integer); stdcall; begin case Index of 1: ; : 3: IDE_CreateWindow(3, 'select * from tab', True); : 36

パイプを使ってメッセージを横取りする! パイプ (pipe) とは? あるプログラムの出 を別のプログラムの に引き渡す機能 DB ツールにはコマンドラインで実 されるものが多く ツールが標準出 するメッセージをインターセプト (intercept) します DLL (Action) DB ツール側 標準 標準出 37

デモ DLL 内で MDI 子フォームを生成する コールバック関数を使う VCL から FireMonkey(FMX) フォームを呼び出す Visual NAVI(Delphi2007) から XE7 の DLL を呼び出す 38

ご清聴 ありがとうございました Yoshiki.tanaka-avsoft@nifty.com 39