• 期货量化交易客户端开源教学第九节——新用户注册


    一、新用户注册界面设计:

            注册时采用手机号注册,客户端发送新号注册申请由后台做审核,后台审核通过后向注册的手机号发送注册成功的消息。注册过的手机号不能再二次注册。

    界面验证代码

    1. private
    2. { Private declarations }
    3. FVerf: AnsiString; {验证码}
    4. FPhone: AnsiString; {手机号}
    5. FTime: Integer;
    6. public
    7. { Public declarations }
    8. FClientSocket: TClientSocket;
    9. procedure logindone(returnstr: AnsiString); {处理返回结构 }
    10. end;
    11. var
    12. FrmReg: TFrmReg;
    13. implementation
    14. uses
    15. uGlobalvariable, uTCP_Client_Service, md5jm, uLogin;
    16. {$R *.fmx}
    17. procedure TFrmReg.BtnOKClick(Sender: TObject);
    18. var
    19. Vtcp_client_service : TTCP_client_service;
    20. data_stream : TMemoryStream;
    21. data_strstrea : TStringStream;
    22. restr,cmd_id: AnsiString;
    23. begin
    24. if (Length(Trim(EdtPhone.Text)) <> 11) or (Trim(EdtPhone.Text) <> FPhone) then
    25. begin
    26. MessageBox(0,'手机号输入错误','提示',MB_OK + MB_ICONHAND);
    27. Exit;
    28. end;
    29. if Trim(EdtPWD.Text) <> Trim(EdtPWD2.Text) then
    30. begin
    31. MessageBox(0,'两次输入的密码不一致','提示',MB_OK + MB_ICONHAND);
    32. Exit;
    33. end;
    34. if Length(Trim(EdtName.Text)) > 4 then
    35. begin
    36. MessageBox(0,'姓名长度错误','提示',MB_OK + MB_ICONHAND);
    37. Exit;
    38. end;
    39. if (Trim(EdtPhone.Text) = '') or (Trim(EdtPWD.Text) = '') or
    40. (Trim(EdtPWD2.Text) = '') or (Trim(EdtVerf.Text) = '') or
    41. (Trim(EdtName.Text) = '') then
    42. begin
    43. MessageBox(0,'内容不能为空','提示',MB_OK + MB_ICONHAND);
    44. Exit;
    45. end;
    46. if Trim(EdtVerf.Text) <> FVerf then
    47. begin
    48. MessageBox(0,'验证码错误','提示',MB_OK + MB_ICONHAND);
    49. Exit;
    50. end;

    二、新用户注册接口协议

    1、 向服务端发送指令
      {用户注册(301)(实盘数据库注册指令)

    发送:300;用户bh;md5密码;姓名;
          返回:300;0;错误提示;
                300;1;注册成功!;}
      {用户注册(301)(模拟数据库注册指令)
          发送:301;用户bh;md5密码;姓名;
          返回:301;0;错误提示;
                301;1;}

    2、注册发送协议:

    1. BtnOK.Enabled := False;
    2. data_stream := TMemoryStream.Create;
    3. data_strstrea := TStringStream.Create;
    4. try
    5. cmd_id := '300';
    6. restr := cmd_id + ';' + Trim(EdtPhone.Text) + ';' +
    7. md5jm.MD5Print( MD5String( Trim(EdtPWD.Text) ) ) + ';' +
    8. Trim(EdtName.Text) + ';';
    9. data_strstrea.WriteString(restr);
    10. data_stream.LoadFromStream( data_strstrea );
    11. {创建TCP连接对象}
    12. Vtcp_client_service := TTCP_client_service.Create(nil);
    13. Vtcp_client_service.Socket_LB := 2;
    14. Vtcp_client_service.FCMD_data.LoadFromStream( data_stream ); {业务指令数据流}
    15. {开始连接}
    16. if not Vtcp_client_service.open_service then
    17. begin
    18. {启动TCP连接失败}
    19. ShowMessage('连接失败!');
    20. end;

  • 相关阅读:
    FusionCompute产品介绍
    docker容器内访问主机端口服务
    基于Echarts实现可视化数据大屏3D元素周期表(1页)
    java异常
    《WEB安全漏洞100讲》(第4讲)CSRF漏洞
    xxl-job的使用
    修改el-tab标签页的label默认样式(插槽)
    UE4 关卡蓝图实现开关门
    信息化与信息系统4
    L6.linux命令每日一练 -- 第二章 文件和目录操作命令 -- touch和ls命令
  • 原文地址:https://blog.csdn.net/qq_35600909/article/details/140350374