DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jsuguo
今日帖子: 33
在线用户: 14
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 xingyuwan (liugguo) ★☆☆☆☆ -
普通会员
2017/8/1 9:21:07
标题:
怎么在Unit1访问ServerMethods1界面上的控件? 浏览:1584
加入我的收藏
楼主: 在DataSnap服务端,
怎么才能在主界面上访问ServerMethods1界面上的控件?
试着在unit1里uses了ServerMethodsUnit1了,也不能访问呢.
此帖子包含附件:
PNG 图像
大小:7.9K
----------------------------------------------
恭喜发财
作者:
男 denis (Denis) ★☆☆☆☆ -
盒子活跃会员
2017/8/1 9:56:11
1楼: 不要在服务端其它单元去访问Servermethods
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/8/1 10:05:13
2楼: 要不要和能不能是两回事。
楼主主要问题在于,不读书。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 denis (Denis) ★☆☆☆☆ -
盒子活跃会员
2017/8/1 10:31:56
3楼: 能访问,但相当麻烦
Servermethods的实例是在线程里创建的,你要访问,要先找到是哪个线程,哪个实例,才能访问。
----------------------------------------------
-
作者:
男 xingyuwan (liugguo) ★☆☆☆☆ -
普通会员
2017/8/1 13:02:32
4楼: 呵呵    我就是想着:

能不能在界面做个 启动 和 停止 按钮?
----------------------------------------------
恭喜发财
作者:
男 hnxxcxg (咏南中间件) ★☆☆☆☆ -
盒子活跃会员
2017/8/1 14:13:25
5楼: ServerMethods1是定义中间件远程方法的地方,是供客户端调用的。
----------------------------------------------
中间件QQ群: 92449782 博客: http://www.cnblogs.com/hnxxcxg/
作者:
男 denis (Denis) ★☆☆☆☆ -
盒子活跃会员
2017/8/1 14:25:29
6楼: 启动 和 停止
访问ServerContainer即可
----------------------------------------------
-
作者:
男 wanlgrm (么么) ▲▲▲▲▲ -
普通会员
2017/8/1 16:55:21
7楼: 我顺便问下:如何在ServerMethods1单元获取 客户端的IP连接IP.
----------------------------------------------
-只会复制粘贴!
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/8/1 18:13:48
8楼: 再说一遍,请好好看书。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2017/8/1 20:31:40
9楼: 官方有例子的
----------------------------------------------
-
作者:
男 xieyunc (xieyunc) ★☆☆☆☆ -
普通会员
2017/8/2 1:52:59
10楼: 完全可以的,如果要访问与数据库操作相关的函数,注意TADOCONNECTION之类的连接控件不要放在ServerContaintUnit1容器中,直接在ServerMethodsUnit1自已初始化,这样的话,ServerMethodsUnit1完全剥离了,做到了与其他文件无关性,比如下面这个例子,就调用了uServerMethods中的CheckFeeRecord和AddFeeRecord接口:
unit uCheckBankLog;

interface
uses System.SysUtils,System.Classes,Vcl.StdCtrls,Winapi.Windows,System.IniFiles,
    Net,System.StrUtils,FireDAC.Comp.Client,Forms;

function GetBankConfig:Boolean;
function GetBankAccountsFileName(const dt:TDate):string;//获取银行对帐单文件名
function SplitBankRecord(const TxtStr:string;out custsn,buyer_id,xiaoqu_id,room_id,je:string):Boolean;
function CheckBankRecord(const dt_zdrq:TDate;const Memo1:TMemo=nil):Boolean;overload; //检查某一帐单日期下的所有帐目
function CheckBankRecord(const fn:string;const Memo1:TMemo=nil):Boolean;overload;
function BankAccountFileExists(const dt:TDate):Boolean;
function BankAccountIsChecked(const dt:TDate):Boolean;
function GetCheckBankAccountTimeInterval:Cardinal;

implementation
uses uSrvParamReadWrite,uServerMethods,uDbConnect;

...
//对帐接口服务器中的对帐函数,对交易方(如银行、支付宝)推送过来的交易日志文件,进行逐一对帐
function CheckBankRecord(const fn:string;const Memo1:TMemo=nil):Boolean;overload;
var
  sList:TStrings;
  txtStr,fn_checked,fn_errored:string;
  custsn,buyer_id,xiaoqu_id,room_id,je:string;
  i: Integer;
  vobj: TServerMethods;
  KeyNumberStr,sRult,ss:string;
begin
  Result := True;
  fn_checked := fn+'.checked';
  fn_errored := fn+'.errored';
  if not FileExists(fn) then
    Exit;

  sList := TStringList.Create;
  KeyNumberStr := GetKeyNumber;
  vobj := TServerMethods.Create(nil);
  try
    try
      sList.LoadFromFile(fn);
      for i := 0 to sList.Count-1 do
      begin
        txtStr := sList[i];
        if not SplitBankRecord(txtStr,custsn,buyer_id,xiaoqu_id,room_id,je) then
        begin
          uSrvParamReadWrite.LogInfo(fn+':'+txtStr+'字段解析失败!');
          Exit;
        end;
        ss := custsn+'|'+buyer_id+'|'+xiaoqu_id+'|'+room_id+'|'+je;

        //if not fd_tmp.Locate('custsn;buyer_id;xiaoqu_idroom_id;tranamt',([bank_custsn,bank_buyer_id,bank_xiaoqu_id,bank_room_id,bank_je]),[]) then
        if vobj.CheckFeeRecord(buyer_id,xiaoqu_id,room_id,je,custsn,LeftStr(custsn,3),KeyNumberStr)<>'0' then //对帐失败
        begin
          sRult := vobj.AddFeeRecord(buyer_id,xiaoqu_id,room_id,je,custsn,LeftStr(custsn,3),KeyNumberStr);
          //ss := custsn+'|'+je+'|';
          if sRult='0' then //充值成功
          begin
          ss := ss+'冲正成功';
          end
          else
          begin
          ss := ss+'冲正失败';
          LogInfo(fn_errored,ss+sRult);
          //Result := False;
          end;
        end else
          ss := ss+'交易正常';
        LogInfo(fn_checked,ss);
        if Memo1<>nil then
          Memo1.Lines.Add(ss);
        Application.ProcessMessages;
      end; //end ... for ...
    except
    end;
  finally
    FreeAndNil(sList);
    FreeAndNil(vobj);
  end;
end;
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS