자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Delphi 데이터스냅 콜백 오류 문의

2016.10.14 11:10

회원 조회 수:366

본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------

현재 베를린 10.1 update 1 버전을 사용중입니다.

엠바코데로 홈페이지에서 데이터스냅 콜백 관련 예제를 다운로드 받아 테스트 중 오류가 있어 문의 드립니다.

샘플코드를 다운받아 컴파일 후 다 정상 작동하는데 NotifyCallback 메서드를 이용해서 클라이언트간에 콜백함수를

호출할경우 오류가 발생합니다. 동영상을 보면 분명 정상 작동하는데 안되네요. 베를린 10.1 버전에서 버그로 인한건지

아니면 다른 설정이 있는건지 알고 싶습니다.

테스트한 예제 소스를 같이 첨부합니다.

 

다운받은 샘플 url: http://edn.embarcadero.com/article/41374

오류 메시지 : 'Remote error: VAR and OUT arguments must match parameter type exactly'

 


procedure TFormClient.ButtonNotifyClick(Sender: TObject);
var AClient: TDSAdminClient; aResponse: TJSONValue;
begin
  AClient := TDSAdminClient.Create(SQLConnection1.DBXConnection);
  try
    AClient.NotifyCallback(
      DSClientCallbackChannelManager1.ChannelName,
      EditDestinationClientId.Text,
      EditDestinationCallbackId.Text,
      TJSONString.Create(EditMsg.Text),
      aResponse
    );
  finally
    AClient.Free;
  end;
end;

 

28288_delphi_labs_datasnap_xe_xe3_callbacks (1).ZIP

 

참고로 테스트한 소스코드 입니다. NotifyCallback 호출시 오류가 발생합니다.

 

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
unit FormClientUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBXDataSnap, DBXCommon, DB, SqlExpr, DBXJSON, StdCtrls,
  DSHTTPCommon, DSService, DSProxy;

type
  TMyCallback = class(TDBXCallback)
  public
    function Execute(const Arg: TJSONValue): TJSONValue; override;
  end;

  TFormClient = class(TForm)
    SQLConnection1: TSQLConnection;
    MemoLog: TMemo;
    DSClientCallbackChannelManager1: TDSClientCallbackChannelManager;
    ButtonBroadcast: TButton;
    EditMsg: TEdit;
    Label2: TLabel;
    ButtonNotify: TButton;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    EditLocalClientId: TEdit;
    EditLocalCallbackId: TEdit;
    EditDestinationCallbackId: TEdit;
    EditDestinationClientId: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure ButtonBroadcastClick(Sender: TObject);
    procedure ButtonNotifyClick(Sender: TObject);
  private
    FMyCallbackName: string;
  public
    procedure LogMsg(const s: string);
    procedure QueueLogMsg(const s: string);
  end;

var
  FormClient: TFormClient;

implementation

{$R *.dfm}

{ TMyCallback }

function TMyCallback.Execute(const Arg: TJSONValue): TJSONValue;
begin
  FormClient.QueueLogMsg(Arg.ToString);
  Result := TJSONTrue.Create;
end;

{ TFormClient }

procedure TFormClient.ButtonBroadcastClick(Sender: TObject);
var AClient: TDSAdminClient;
begin
  AClient := TDSAdminClient.Create(SQLConnection1.DBXConnection);
  try
    AClient.BroadcastToChannel(
      DSClientCallbackChannelManager1.ChannelName,
      TJSONString.Create(EditMsg.Text)
    );
  finally
    AClient.Free;
  end;
end;

procedure TFormClient.ButtonNotifyClick(Sender: TObject);
var AClient: TDSAdminClient; aResponse: TJSONValue;
begin
  AClient := TDSAdminClient.Create(SQLConnection1.DBXConnection);
  try
    AClient.NotifyCallback(
      DSClientCallbackChannelManager1.ChannelName,
      EditDestinationClientId.Text,
      EditDestinationCallbackId.Text,
      TJSONString.Create(EditMsg.Text),
      aResponse
    );
  finally
    AClient.Free;
  end;
end;

procedure TFormClient.FormCreate(Sender: TObject);
begin
  FMyCallbackName := TDSTunnelSession.GenerateSessionId;
  DSClientCallbackChannelManager1.ManagerId := TDSTunnelSession.GenerateSessionId;
  DSClientCallbackChannelManager1.RegisterCallback(
    FMyCallbackName,
    TMyCallback.Create
  );

  EditLocalClientId.Text := DSClientCallbackChannelManager1.ManagerId;
  EditLocalCallbackId.Text := FMyCallbackName;
  EditDestinationClientId.Text := '';
  EditDestinationCallbackId.Text := '';
end;

procedure TFormClient.LogMsg(const s: string);
begin
  MemoLog.Lines.Add(DateTimeToStr(Now) + ': ' + s);
end;

procedure TFormClient.QueueLogMsg(const s: string);
begin
  TThread.Queue(nil,
    procedure
    begin
      LogMsg(s)
    end
  );
end;

end.
번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 17164
공지 유용한 관련 사이트 관리자2 2014.03.20 56034
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99466
1053 cap파일 배포시 인증 문제에 대한 자문을 요청드립니다. [1] 데브기어 2017.11.15 367
1052 디버깅 시 tList<t>.List w.a.t.c.h. 이상 작동 [9] 신재국 2020.02.25 367
1051 Exception EFilerError in module rtl190.bpl at 000FF30F 에러가 납니다. 쭈니쿤 2016.01.15 367
1050 android socket error [2] devdev 2018.10.17 368
1049 IOS 배포 에러 질문드립니다. [PAClient Error] Error: E0776 [1] syc 2021.01.28 368
1048 윈도우 기반에서 원격 디버깅은 어떻게 하나요? 험프리 2017.07.12 369
1047 안녕하세요 db그리드에서 한글이 물음표로 출력되는것에 대해 질문드리고 싶어요. [4] file vast 2018.03.19 369
1046 [질문] DX 10.2.3에서 MSVCR90.DLL 오류가 발생합니다. file 델사냥 2018.04.02 369
1045 [XE8 출시세미나] 기존에 유니코드가 아니라 ANSI를 사용하고 있습니다. 델파이 2009 버전 이상에서는 무조건 유니코드를 써야하나요? 업그레이드 하더라도 ANSI를 계속 사용하려면 어떻게 하나요? [1] 관리자 2015.04.30 369
1044 [마이그레이션 세미나] AWS의 데이터베이스(RDS)에 연결하는 방법 중에서 웹서비스를 이용하는 방법에 대하여 알고 싶습니다. 험프리 2015.11.24 369
1043 모바일 앱 개발 시 구글음성 입력 기능을 호출하는 샘플이 있나요? [1] 손보라 2017.04.14 370
1042 컴포넌트 사용시 아이콘 표시 안보임 [1] file 건들다맞지 2018.06.27 370
1041 FTPS에 관련된 예제가 없을까요? [1] 맛재현 2018.02.01 372
1040 윈도우10과 이전 윈도우에서 VCL 버튼이나 메지지 상자 코너 표시형태 문의입니다. [2] KJ 2018.09.08 372
1039 TValue에서 Tbytes의 데이터를 어떻게 뽑아낼수 있는지 문의 드립니다. [4] 한태수 2019.10.24 372
1038 안드로이드 이미지 픽셀 추출 관련 질문 [1] hsson 2016.04.19 373
1037 Delphi2009 TWebbrowser와 win10 Creative 업데이트 이후 발생되는 문제 [1] kpic 2017.07.19 373
1036 델파이Xe2 에서 ExportGridToXLSX 엑셀 다운로드시 건수 [1] 가나다 2019.08.19 373
1035 [마이그레이션][델파이3>델파이10시애틀] 실행화일이 연결이 안되는거 같습니다. [1] 박성민 2015.09.30 373
1034 Form BorderStyle:=bsNone 일때 화면 깜박임 softkim 2019.06.09 374