Delphi Tips(7) DataSnapを試してみた

新規プロジェクトで「その他/DataSnap Server」を選択すると、テスト用に文字を反転させるメソッドが組み込まれる。

そのメソッドを利用した簡単なものを作ってみた

ds2
◆サーバー側

・新規プロジェクト > その他 > 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に変換

疲れました...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です