Delphi Tips(7) DataSnapを試してみた
新規プロジェクトで「その他/DataSnap Server」を選択すると、テスト用に文字を反転させるメソッドが組み込まれる。
そのメソッドを利用した簡単なものを作ってみた
・新規プロジェクト > その他 > DataSnap Server (以下ウイザードに答えていく)
・VCLフォームアプリケーション > プロトコル HTTP > 8070 > ポートテスト >Tcomponent > 完了
プロトコルはTCP、HTTP、HTTPSが選択できるが、HTTP ポート番号8070 を適当に選択してみた
いったん実行してみる。
出来上がった実行ファイルを、適当なPCにコピーして実行しておく
◆クライアント側
・新規プロジェクトでVCLフォームを選択
・Edit 2個、Button 1個、SQLConnection 1個を適当に配置
・SQLConnectionのDriverに「DataSnap」を指定して、下記を指定する
LoginPrompt = False HostName=winmon04 ← 上記サーバー側のPC名 Port=8070 CommunicationProtocol=http Connected = True
・SQLConnectionのアイコンを右クリックして「DataSnapクライアント クラスの生成」を選択
・追加されたUNITのUNIT名を、フォーム側のUSESに追加
・ボタンクリックイベントにソースを張り付け
unit main; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.SqlExpr, Data.DBXDataSnap, IPPeerClient, Data.DBXCommon, Data.DbxHTTPLayer, Unit2; type TForm1 = class(TForm) SQLConnection1: TSQLConnection; Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var SM: TServerMethods1Client; begin SM := TServerMethods1Client.Create(SQLConnection1.DBXConnection); Edit2.Text := SM.ReverseString(Edit1.Text); end; end.
2013/07/17 追記
ハマったので、追記します。
サーバー側で TStringList を返すメソッドを作成してテストしたところ、
アクセス違反でうまく動作しない。
いろんなサイトを見て回ったが原因は不明
結局...
TStringListを指定するのは断念しStringに変更した
サーバー側:TStringListをStringに変換 (TStringList.textプロパティを使用)
クライアント側:StringからTStringに変換
疲れました...