10th Developer Camp - A5

Similar documents
Delphi/400で本格Webアプリ開発

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

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

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

Delphi/400を利用したはじめてのWeb開発

JACi400のご紹介~RPGとHTMLで簡単Web化~

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

Delphi/400を使用したWebサービスアプリケーション

Delphi/400活用! スマートデバイスアプリケーション開発

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Webサービスを利用して機能UP!

10th Developer Camp - B5

WebReportCafe

CodeGear Developer Camp

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Mobile Access簡易設定ガイド

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

WEBシステムのセキュリティ技術

◎phpapi.indd

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

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

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

データアダプタ概要

5-2. 顧客情報をエクスポートする 顧客管理へのアクセス手順 メールディーラーで管理する顧客情報に関する設定を行います 1. 画面右上の 管理設定 をクリックする 2. 管理設定 をクリックする 3. ( タブ ) 顧客管理 をクリックする 2

保存を行いたい場所 ( デスクトップ 等 ) を選択し 保存 (S) ボタンを押してください ファイル名 ファイル名は Jsas_TKNPrint.exe という初期値になっていますが 変更することができます 2 データのダウンロード ボタンを押すと 指導面接用紙の一括印刷用ソフトに取り込む指導対象

PowerPoint プレゼンテーション

チャレンジ!dbExpress接続

Cuoreテンプレート

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

産直くん 9 リピートくん 9 バックアップ リストア作業チェックリスト バックアップ リストア作業項目一覧 作業項目作業目安時間概要 00 バックアップ リストア作業を行う前に 産直くん 9 リピートくん 9 のバックアップ リストア作業を円滑に行うための確認事項をまとめています 1. バックアッ

SAMBA Remote(Mac) 編 PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP

PowerPoint プレゼンテーション

改訂履歴 Ver 日付履歴 新規作成 5 月末の機能追加として キーワード検索部分およびアドレス直接入力時の入力補完機能 検索結果対象にメーリングリストを追加 メールアドレスとの区別の為にメーリングリストを青字表示 カレンダーアイコン押下時の挙動修正 Gmail 内のアド

(1)IE6 の設定手順 (1)IE6 の設定手順 1) 信頼済みサイトの追加手順 1: ブラウザ (Internet Explorer) を起動します 手順 2: ツール / インターネットオプション / セキュリティ メニューを選択します 手順 3: セキュリティ タブの 信頼済みサイト を選択

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

ミガロ.製品 最新情報

Microsoft Word - CBESNet-It連携ガイドver8.1.doc

SAMBA Stunnel(Mac) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxxxx 部分は会社様によって異なります xxxxx 2 Mac OS 版ダウンロー

Microsoft Word - XOOPS インストールマニュアルv12.doc

1 はじめに 前準備 MICROSOFT 製品のプログラムを最新の状態にする NET FRAMEWORK 4.0 ( と日本語 LANGUAGE PACK) のインストール NET FRAMEWORK 4.0 のインストール... 4

MultiLABELISTOCX と MultiLABELISTV4 MLOCX は MLV4 のレイアウト発行機能を継承しています したがって MLV4 の振分発行やプ リセット発行を使用するための登録情報は使用できません MLV4 のレイアウト管理でレイアウトを作成すると 拡張子が m lay

Delphi/400開発ノウハウお教えします 「メニュー」開発のテクニック

Indyを利用したメール送信機能開発

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

スライド 1

TestDesign for Web

スライド 1

1. 信頼済みサイトの設定 (1/3) この設定をしないとレイアウト ( 公報 ) ダウンロードなどの一部の機能が使えませんので 必ず設定してください 1 Internet Explorer を起動し [ ツール ]-[ インターネットオプション (O)] を選択します 2 [ セキュリティ ] の

保存を行いたい場所 ( デスクトップ 等 ) を選択し 保存 (S) ボタンを押してください ファイル名 ファイル名は Jsas_TSKPrint.exe という初期値になっていますが 変更することができます 2 データのダウンロード ボタンを押すと 一括印刷用ソフトに取り込む停止及び警告認定者 (

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

MVP for VB が語る C# 入門

Delphi/400開発ノウハウお教えします Googleマップ連携によるリッチなGUIアプリ開発

ユーザーズマニュアル

1. アンケート集計サンプルについて ここでは Windows Azure と SQL Azure を使ってアンケートを実施し アンケート結果を Excel で集計するサンプルについて説明します アンケートは Windows Azure で運用し アンケート結果は SQL Azure に格納されます

HeartCoreインストールマニュアル

注意 インストール中に ユーザアカウント制御 ( 以下 UAC といいます ) の実行確認画面が表示されることがあります 表示された場合ははいをクリックして インストールを進めてください なお 管理者以外の場合 管理者への昇格を求める UAC 画面が表示される場合がありますので 管理者アカウントのパ

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

ステップアップ! モバイルアプリケーション開発

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

HeartCoreインストールマニュアル(PHP版)

目次 目次 準備いただくもの 準備 SQLServer2008 R2 ExpressEdition のインストール インストールの前に インストール 設定一覧 機

クイックマニュアル(利用者編)

Delphi/400 テクニック公開 Delphi/400開発 ~ パフォーマンス向上テクニック ~

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

PowerPoint Presentation

LCV-Net ファイルコンテナ ユーザーマニュアル

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

brieart変換設定画面マニュアル

Microsoft Word - tutorial3-dbreverse.docx

KDDI ホスティングサービス G120 KDDI ホスティングサービス G200 WordPress インストールガイド ( ご参考資料 ) rev.1.2 KDDI 株式会社 1

スライド 1

Microsoft Word - RefWorksコース doc

Microsoft Word - Gmail-mailsoft設定2016_ docx

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

目次 ログイン ログイン お知らせ画面... 3 チェック結果の表示 / 新規作成 / 更新 / データ出力 チェック結果一覧の表示 新規作成 チェック結果の検索 チェック結果の詳

メディプロ1 Javaサーブレット補足資料.ppt

2015 年 4 月 15 日に発表された HTTP.sys の脆弱性 ( ) へ の対応について 製品名 : バージョン : 対象プラットフォーム : カテゴリ : iautolaymagic すべてすべて Web アプリ この度 マイクロソフト社製品において緊急度の高い脆弱性 (CV

Transcription:

A5 Delphi テクニカルセッション 知って得する! 現役ヘルプデスクが答える Delphi テクニカルエッセンス 3.0 株式会社ミガロ RAD 事業部技術支援課顧客サポート主任吉原泰介 アジェンダ ミガロについて VCL for the Web 基礎知識 VCL for the Web のよくある問合せ Q&A Q1 戻るボタンの対応方法 Q2 Cookie を利用した制御 Q3 IWText の右寄せ表示 Q4 開発モードの変更方法 Q5 IIS 上での動作の違い お持ち帰り資料 QA QA GUI GUI アプリから WEB WEBサイトの呼出 QB QB デバッグ実行の判断 2 1

ミガロについて 株式会社ミガロ -A 100% IBM i Company- ミガロについて 会社情報会社情報所在地 : 本社大阪市浪速区湊町 2-1-57 所在地 : 本社大阪市浪速区湊町 2-1-57 難波サンケイビル13F 難波サンケイビル13F 東京事業所東京都港区麻布台 1-4-3 東京事業所東京都港区麻布台 1-4-3 エグゼクティブタワー麻布台 11F エグゼクティブタワー麻布台 11F 事業内容事業内容 IBM i 向けのソフトウェア ツール販売および技術サポート IBM i 向けのソフトウェア ツール販売および技術サポート 開発ツール 災害対策ソフト 開発ツール 災害対策ソフト Delphi/400 *nomax Delphi/400 *nomax JACi400 JACi400 アプリケーション ライフサイクル マネージメント アプリケーション ライフサイクル マネージメント MKS MKS Delphi/400 Delphi を IBM i に完全対応させたミドルウェア 国内約 600 社 全世界約 5,000 社の導入実績 3 VCL for the Web 基礎知識 2

VCL for the Web 基礎知識 WEB サーバアプリケーションとは WEB ブラウザ 1 5 WEB サーバー 2 4 3 WEBサーバアプリケーション データベース 処理手順 1 WEB ブラウザは URL を指定することにより 検索等の処理などを要求 2 WEB サーバーは 指定された URL より対象の WEB サーバアプリケーションを CALL 3 WEB サーバアプリケーションは処理を実行し データ等を抽出 4 WEB サーバアプリケーションは処理結果を HTML として WEB サーバーに返す 5 WEB サーバーは リクエストしたブラウザに対し 処理結果 HTML を返す 5 VCL for the Web 基礎知識 一般的な WEB サーバアプリケーションの仕組み 要求 応答 実行 結果 WEB サーバアプリケーション 1 処理の振り分け 2 フォームデータ等の取得 3 処理実行 4 結果より HTML 作成 5 HTML を WEB サーバーに渡す アクセス 処理手順 1 検索処理や登録処理等の各処理を PathInfo 部を使用して振り分ける 2 GET メソッドや POST メソッドを使いブラウザから要求された変数を受け取る 3 1 と 2 で得られた情報より処理 ( データ取得など ) を実行する 4 処理結果を元に結果値を含む HTML を作成する 5 HTTP 応答ヘッダ及び作成した HTML を標準出力を使って WEB サーバーに渡す 6 3

VCL for the Web 基礎知識 C/S アプリケーションと WEB サーバアプリケーションの違い C/S アプリが 2 層構造なのに対し WEB サーバアプリは 3 層構造になる C/S SQL 等でデータを要求 データ抽出結果が返却 WEB ロジック 画面生成 処理自体を要求 SQL 等でデータを要求 データ格納 表示機能のみ 画面を返却 ロジック 画面生成 データ抽出結果が返却 データ格納 7 VCL for the Web 基礎知識 VCL for the Web サーバアプリケーション作成時の 3 つのモード スタンドアロンモード 単体で動作するモード (WEB サーバー自体も VCL for the Web を利用 ) WEB サーバ Web Application HTML ( フォーム ) アプリケーションモード 市販の WEB サーバーを利用し WEB アプリ部分の全てを VCL for the Web で作成 Web Application HTML ( フォーム ) ページモード WebSnap を使って WEB アプリを構築し 画面生成部分を VCL for the Web で作成 WebSnap HTML ( フォーム ) 8 4

VCL for the Web 基礎知識 VCL for the Web アプリケーションの構成 ServerController オブジェクト VCL for the Web の管理を行うオブジェクト WebApplication オブジェクトとフォームオブジェクトの管理を行う WebApplication オブジェクト WEB ブラウザ毎の情報を管理するオブジェクト 複数ページにまたがるデータ ( グローバル変数等 ) の保持を行う Form オブジェクト ブラウザ画面からの入力を受け付けたり 画面を作成したりするオブジェクト GUI アプリケーションと同様にフォームにプログラムを行う 9 VCL for the Web 基礎知識 VCL for the Web アプリケーションの開発手順 スタンドアロン / アプリケーションモード手順 1 新規プロジェクトの作成 2 フォームにコンポーネントを貼り付けてプロパティの設定 3 必要に応じてイベントハンドラを作成 4 コンパイル 5 実行 ( テスト ) GUI GUI アプリケーションと同じような手順で開発が可能 10 5

VCL for the Web 基礎知識 VCL for the Web プロジェクトの新規作成 VCL for the Webプロジェクトの作成手順 1. ファイル 新規作成 その他を選択 2. Delphiプロジェクト VCL for Web より [VCL for the Web Application Wizard] を選択 3. ウィザード画面より作成モード 保存先 ファイル名等を指定 スタンドアロンモードの場合 StandAlone Application アプリケーションモードの場合 ISAPI Extension Create User Sesseion にチェック ( ユーザーセッションを使う ) プロジェクトの保存先 プロジェクト名を指定 11 VCL for the Web 基礎知識 コンポーネントの配置 コンポーネントの貼り付けおよびプロパティの設定 1. ウィザードにて作成されたプロジェクトより Unit1 を選択し フォームを表示 2. [IWStandard] ページより IWLabel IWEdit IWButton をフォームに貼り付けプロパティをセット IWLabel1 コンポーネント Caption プロパティ = メッセージ IWEdit1 コンポーネント Text プロパティ = ( 空文字 ) IWButton1 コンポーネント Caption プロパティ = 表示 12 6

VCL for the Web 基礎知識 イベントの作成 ~ コンパイル イベントハンドラの設定とコンパイル / 実行 1. IWButton1コンポーネントのonClickイベントハンドラを設定し 下記コードを入力 procedure TIWForm1.IWButton1Click(Sender: TObject); WebApplication.ShowMessage(IWEdit1.Text); 2. コンパイル 実行 ( 起動するフォームからブラウザ起動ボタンを押下し動作確認 ) ボタンクリックにより エディットボックスの入力文字列がメッセージボックスに出力 Execute ボタン押下 13 VCL for the Web 基礎知識 データベース接続 DB 連結用コンポーネント データベース接続は DBExpress 等 GUI と同様に使用することができます データベースに連結した画面を作成したい場合 [IW Data] ページにコンポーネントが用意されています ([Data Control] ページのコンポーネントに相当 ) 例えば DataSet -> DataSource -> IWDBGrid によってデータを一覧表示 14 7

VCL for the Web 基礎知識 画面遷移 画面の遷移方法 Delphiプロジェクト VCL for the Web より [New Form] を選択して追加 次画面呼び出し元の処理 Createメソッドでオブジェクトを生成 Showメソッドで遷移 次画面の処理 画面終了時にReleaseメソッド呼び出しにより 元のフォームに戻る procedure TfrmMain.btnGoFrm2Click(Sender: TObject); var frmdetail: TfrmDetail; frmdetail := TfrmDetail.Create(WebApplication); frmdetail.show; フォーム変数は Global 定義されていないので ローカル変数として定義 procedure TfrmDetail.btnBackClick(Sender: TObject); Release; 15 VCL for the Web 基礎知識 グローバル変数 グローバル変数の扱い WEBアプリケーションの場合 WEBブラウザ単位に変数を保持しなければならない VCL for the Webの場合 UserSessionユニットのIWUserSessionクラスに変数を定義し UserSessionオブジェクトとして利用する TIWUserSession = class(tiwusersessionbase) sessession: TSession; dbas: TDatabase; グローバル変数 qryselectdata: TQuery; WEBブラウザ毎に変数が別々に保持さ private れる { Private declarations } public { Public declarations } LogOnUserID: String; // ログオンユーザー ID LogOnUserName: String; // ログオンユーザー名 procedure TfrmMain.IWAppFormRender(Sender: TObject); // ログオンユーザー名の表示 lbllogonuser.caption := UserSession.LogOnUserName; 16 8

よくある問合せ Q&A よくある問合せ Q&A Q1 戻るボタンの対応方法 質問 IE IE 上の戻るボタンを制御する方法にはどのようなものがあるのでしょうか 回答 バージョンにもよりますが ブラウザの戻るボタンの動作は IWServerController の OnBackButton イベントで処理を行うことができます Demos IntraWeb Win32 BackButton にサンプルも用意されています (( バージョンによって異なります )) 18 9

よくある問合せ Q&A サンプル Q1 戻るボタンの対応方法 Demos IntraWeb Win32 BackButton procedure TIWServerController.IWServerControllerBaseBackButton( ASubmittedSequence, ACurrentSequence: Integer; AFormName: String; var VHandled, VExecute: Boolean); ディフォルトにするフォーム const DefaultFormName = 'MainForm'; type TIWFormClass = class of TIWForm; var LForm : TIWForm; // This is a generic back-button handler that can easily be adapted to // your application VHandled := True; フォーム名が取得できない場合は VExecute := True; ディフォルトのフォームを指定 if AFormName = '' then AFormName := DefaultFormName; if WebApplication.FindComponent(AFormName) <> nil then WebApplication.SetActiveForm(WebApplication.FindComponent( AFormName) as TIWContainer); 指定されたフォーム名を WebApplicationの中で探して存在 end else すればアクティブにする try LForm := TIWFormClass(FindClass('T' + AFormName)).Create(WebApplication); WebApplication.SetActiveForm(LForm); except VHandled := false; 指定されたフォーム名を WebApplicationの中で探して存在 しなければ生成してアクティブにす る 19 よくある問合せ Q&A Q2 Cookie を利用した制御 質問 Cookie Cookieを利用して当日限りで 11 回目以降のログイン入力に初期値を設定することはできますか? 回答 Cookie Cookieは TWebReques の CookieFields プロパティや TWebResponse の SetCookieField メソッドで扱うことができます 扱えることとは別にセキュリティ的な配慮は必要です 20 10

よくある問合せ Q&A Q2 Cookie を利用した制御 初回ログイン時 2 回目以降ログイン時 ログインで Cookie 書込み Cookie から初期値取得 Cookie 21 よくある問合せ Q&A Q2 Cookie を利用した制御 ログイン時に Cookie の作成 procedure TIWForm1.IWButton1Click(Sender: TObject); var slstcookie: TStringList; slstcookie := TStringList.Create; try with slstcookie do Clear; Append('USER=' + IWEdit1.Text); Append('PASS=' + IWEdit2.Text); webapplication.response.setcookiefield(slstcookie, '', '', (Now + 1), False); finally slstcookie.free; ログインで Cookie 書込み SetCookieField メソッドについては次ページ参照 22 11

よくある問合せ Q&A Q2 Cookie を利用した制御 SetCookieField メソッドと Cookie の扱い procedure SetCookieField(Values: TStrings; const ADomain: string; const APath: string; AExpires: TDateTime; ASecure: Boolean); パラメータ Values:Cookie の格納内容複数の Cookie をまとめて書き込むことができます ADomain:Cookie 送信先のドメイン名省略時は使用している場合 Cookie 応答を生成したサーバのホスト名です APath: Cookie 送信先のパス URL のドメイン以降のパス 取得時にはこのパスが前方一致で一致する Cookie を扱います 実際にアクセスを行う URL の考慮が必要です Aexpires: Cookie 有効期限削除する場合は過去の日付を設定したりもします Asecure: セキュリティの確保セキュリティが確保された接続の使用時に Cookie をクライアントによってのみ渡すかどうかを設定します 例えばこの URL であれば動的生成部分を含めないように配置先を指定する /DelphiISAPI と指定しておくと前方一致する URL 上で格納した Cookie を扱うことができます 23 よくある問合せ Q&A Q2 Cookie を利用した制御 Cookie に格納された値 Cookie 上の値 USER%82%E6%82%B5%82%ED%82%E7 PASSMIGARO 画面起動時に Cookie の取得 procedure TIWForm1. IWAppFormCreate(Sender: TObject); with webapplication.request.cookiefields do IWEdit1.Text := HttpDecode(Values['USER']); IWEdit2.Text := HttpDecode(Values['PASS']); デコードして値を取得 Cookie から初期値取得 そのまま取得すると 空白や特殊記号 日本語等の全角文字は HTTPApp ユニットの HTTPDecode でデコードして取得する必要があります 24 12

よくある問合せ Q&A Q3 IWText の右寄せ表示 質問 IWText IWText での表示内容を右寄せで表示したいのですが 可能でしょうか? 回答 IWText IWText IWMemo IWButton 等には残念ながら Alignment プロパティは存在しません 右寄せに表示を行いたい場合は style styleタグを利用する方法が考えられます 25 よくある問合せ Q&A Q3 IWText の右寄せ表示 ExtraTagParams プロパティに Style タグを記述 Delphi7 で附属していた IWEdit も Alignment プロパティがないので同じような対処ができます 26 13

よくある問合せ Q&A Q4 開発モードの変更方法 質問 スタンドアロンで開発して ISAPI ISAPI アプリケーションに変更することはできますか? 回答 ISAPI ISAPI アプリケーションで新規作成したプロジェクトにスタンドアロンで作成モジュールを取り込みを行うことで簡単に作り変えることができます テストテスト / 本番用にプロジェクトファイルを用意すると便利です / 27 よくある問合せ Q&A Q4 開発モードの変更方法 ISAPI への変更手順 1 メニューの [ ファイル 新規作成 その他 ] を選び 表示されたツリーの中から Delphi プロジェクト -VCL for the Web を選択します 次に表示されたアイコンの中から VCL for the Web Application Wizard を選択します Application Type で ISAPI Extension を選択します 28 14

よくある問合せ Q&A Q4 開発モードの変更方法 2 IWForm1 UserSessionUnit の ServerController のファイルが作成されます デフォルトで作成されたこれらのファイルが不要ならば メニューの プロジェクト プロジェクトから削除 で削除します 29 よくある問合せ Q&A Q4 開発モードの変更方法 3 メニューの プロジェクト プロジェクトに追加 を選択し スタンドアロンモードのユニットのあるフォルダを指定し 必要なユニットを追加します 4 メニューの ファイル すべて保存 を選びます 5 メニューの プロジェクト XXXXX( プロジェクト名 ) をコンパイル を行うと ISAPI の dll ファイルが作成されます 30 15

よくある問合せ Q&A Q5 IIS 上での動作の違い 質問 スタンドアロンモードで動作した処理やタイムアウトの動作が が IIS IIS 上ではうまくいきません 回答 IIS IIS 上で動作を行う場合 スタンドアロンモードと違い IIS IISのユーザーでプログラムが実行されることになります 環境上の権限や IIS IISの制御の設定などの実行環境との違いを確認する必要があります 31 よくある問合せ Q&A Q5 IIS 上での動作の違い 実行ユーザーの権限 IIS が稼動している OS はディフォルトでは IUSR_ サーバー名 アカウントのユーザーとして 匿名アクセスを認識しています ISAPI アプリケーションもこのユーザーで実行されることになります この IUSR_ サーバー名 アカウントはディフォルトではローカルログオン権限とゲスト権限しか割り当てられていないません スタンドアロンモードとの動作の違いを ISAPI の実行ユーザーの権限によるものかを確認する必要があります ブラウザ アクセス Webサーバ IIS ISAPI アプリケーション 処理 例えばプリンタに対する権限 アプリケーションの実行ユーザーは IUSR_ サーバー名 プリンタ 32 16

よくある問合せ Q&A Q5 IIS 上での動作の違い セッションのタイムアウトについて アプリケーション側 IWServerController の SessionTimeOut プロパティで設定することができます また SessionTimeOutURL プロパティでの URL やファイルを設定しておくことで セッションアウト時の遷移先とすることもできます (URL とファイルは片方しか設定できません ) 見落とし易い IIS 側 バージョンによって設定も異なりますが 通常の 接続のタイムアウト の設定の他 アプリケーションプール上のアイドルタイムアウトなどの設定も管理する必要があります IIS 側でセッションが切断されてしまうと アプリケーション側もセッションを保つことはできません 33 番外 Q&A QA GUI アプリから WEB サイトの呼出 質問 GUI GUI アプリケーション内で検索 Web Webサイトを呼び出して結果を表示するようなことはできますか? 回答 検索パラメータなどを URL URLエンコードで変換して サイトにあわせた指定を行い 呼出を行うことができます WebBrowser コンポーネントで結果をアプリケーション画面内に取り込むことも可能です 34 17

番外 Q&A QA GUI アプリから WEB サイトの呼出 WEB サーバーへの問い合わせ WEB ブラウザから WEB サーバーへの問い合わせ HTTP 要求メッセージを WEB ブラウザから WEB サーバーへ送る ( ヘッダ部 ) URL 情報 ブラウザ情報等 問い合わせ方法 2 種類の方法が存在 GET メソッド POST メソッド ( エンティティ部 ) フォーム情報 HTTP 要求メッセージ 35 番外 Q&A QA GUI アプリから WEB サイトの呼出 GET メソッドと POST メソッド それぞれの特徴 パラメータセット方法 WEB ブラウザの表示 パラメータの大きさ GET メソッド URL 内の Query 部 アドレス部に Query 部が付加されて送信 大きなデータ送信は不向き POSTメソッドエンティティ部表示は不変大きなデータを送信可能 POST メソッドは フォームデータ内部にデータを持つ為 URL での指定は不可能だが GET メソッドの場合 URL 自体にパラメータが記述できるため 比較的容易に問い合わせが可能 GET メソッドの場合 URL にパラメータを指定した問い合わせが可能 36 18

番外 Q&A QA GUI アプリから WEB サイトの呼出 GET メソッドによる問い合わせ例 (1) 日本郵便郵便番号検索 (GET メソッド ) http://search.post.japanpost.jp/cgi-zip/zipcode.php?zip=5560017 プロトコル ホスト名 スクリプト名 問い合わせ QUERY 37 番外 Q&A QA GUI アプリから WEB サイトの呼出 GET メソッドによる問い合わせ例 (2) http://www.google.co.jp/search?num=30&q=%e3%83%9f%e3%82%ac%e3%83%ad google 検索 (GET メソッド ) 問い合わせQUERY 結果件数 =30 件 & 検索語 =ミガロ 38 19

番外 Q&A QA GUI アプリから WEB サイトの呼出 URL エンコード ブラウザから送信するデータは URL エンコードが必要 URL エンコード 空白や特殊記号 日本語等の全角文字を符号化するルール使用する文字コード体系により値が決定例 ) ミガロ Shift-JIS %83%7E%83K%83%8D UTF-8 %E3%83%9F%E3%82%AC%E3%83%AD Delphiでは HTTPAppユニットにあるHTTPEncode 関数で変換可能 Shift-JIS の場合 HTTPEncode(Avalue) UTF-8 の場合 HTTPEncode(AnsiToUtf8(Avalue)) 39 番外 Q&A QA GUI アプリから WEB サイトの呼出 GoogleMap の呼出例 Delphi で入力した住所を URL エンコードし URL を送信 応答された HTML を WebBrowser コンポーネント上に表示 procedure TfrmMain.button1Click(Sender: TObject); var stext: String; stext := Format('http://www.google.co.jp/maphp?hl=ja&tab=wl&q=%s', [HTTPEncode(AnsiToUtf8(edtAddress.Text))]); WebBrowser1.Navigate(sText); 40 20

番外 Q&A QB デバッグ実行の判断 質問 開発環境でテストで実行する際の DB DB 接続のログインを省くことはできませんか? 回答 実際のアプリケーションの実行とデバッグ実行では System.DebugHook 変数の値が異なります System.DebugHook 変数で判断して ログインの省略を用意しておけば デバッグ実行の省略ができます 41 番外 Q&A QB デバッグ実行の判断 SQLConnection の DebugHook 制御例 with SQLConnection1 do // デバッグ実行であればユーザー / パスワードを自動設定 if DebugHook <> 0 then LoginPrompt := False; Params.Values['User_Name'] := ' ユーザー名 '; Params.Values['Password'] := ' パスワード '; end else LoginPrompt := True; Params.Values['User_Name'] := ''; Params.Values['Password'] := ''; DebugHook デバッグ実行時 :1 EXE 実行時 :0 開発環境デバッグ実行時だけ暗黙のログインを行うことで 開発上での手間を省きます その他デバッグ実行時のみ扱うデータを切り替えるなどにも便利です Connected := True; 42 21