zoukankan      html  css  js  c++  java
  • delphi amf3 demo

    delphi amf3 demo

    procedure TForm1.Button1Click(Sender: TObject);
    //还原
    var
      buff: array of Byte;
      bufflen, I: Integer;
      hex: string;
      XXX: variant;
    begin
      hex := Trim(Memo1.Lines.Text);
      bufflen := Length(hex) div 2;
      SetLength(buff, bufflen);
      for I := 0 to bufflen - 1 do
      begin
        buff[I] := StrToInt('$' + hex[1 + I * 2] + hex[2 + I * 2]);
      end;
      QAMF3Helpher.SetData(@buff[0], bufflen);
      XXX := QAMF3Helpher.ReadAMF3Variant;
    
      Memo2.Text := XXX;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    //序列字符串
    var
      I: Integer;
      tmp: string;
      tmpAdd: DWORD;
    begin
      QAMF3Helpher.BeforeWrite;
      QAMF3Helpher.WriteAMF3Variant('你好,QAMF3');
      tmp := '';
      tmpAdd := DWORD(QAMF3Helpher.Stream.Memory);
      for I := 0 to QAMF3Helpher.Stream.Size do
      begin
        tmp := tmp + inttohex(pbyte(tmpAdd + I)^, 2);
      end;
      Memo1.Lines.Text := tmp;    //061DE4BDA0E5A5BDEFBC8C51414D463300
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    //序列小数
    var
      I: Integer;
      tmp: string;
      tmpAdd: DWORD;
    begin
      QAMF3Helpher.BeforeWrite;
      QAMF3Helpher.WriteAMF3Variant(22.0);
      tmp := '';
      tmpAdd := DWORD(QAMF3Helpher.Stream.Memory);
      for I := 0 to QAMF3Helpher.Stream.Size do
      begin
        tmp := tmp + inttohex(pbyte(tmpAdd + I)^, 2);
      end;
      Memo1.Lines.Text := tmp;     //05403600000000000000
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    //序列时间
    var
      I: Integer;
      tmp: string;
      tmpAdd: DWORD;
    begin
      QAMF3Helpher.BeforeWrite;
      QAMF3Helpher.WriteAMF3Variant(Now());
      tmp := '';
      tmpAdd := DWORD(QAMF3Helpher.Stream.Memory);
      for I := 0 to QAMF3Helpher.Stream.Size do
      begin
        tmp := tmp + inttohex(pbyte(tmpAdd + I)^, 2);
      end;
      Memo1.Lines.Text := tmp;   //0801427759CEABD5900000
    end;
    
    procedure TForm1.Button5Click(Sender: TObject);
    //序列结构体
    var
      ioResponse: IAS3Object;
      ioResponseHeader: IAS3Object;
      I: Integer;
      tmp: string;
      tmpAdd: DWORD;
    begin
      QAMF3Helpher.BeforeWrite;
      ioResponse := TAS3Object.Create;
      ioResponseHeader := TAS3Object.Create;
      ioResponse.SetAS3ClassName('TESTResponse');
      ioResponse.SetIsDynamic(false);
      ioResponse.SetIsExternalized(false);
    
      ioResponseHeader.SetAS3ClassName('TESTResponseHeader');
      ioResponseHeader.SetIsDynamic(false);
      ioResponseHeader.SetIsExternalized(false);
      ioResponseHeader.SetValue('StatusCode', 0);
      ioResponseHeader.SetValue('StatusText', '测试状态');
      ioResponseHeader.SetValue('InternalStatusCode', 255);
      ioResponse.SetValue('header', ioResponseHeader);
      QAMF3Helpher.WriteAMF3Type(amf3dtObject);
      QAMF3Helpher.WriteAMF3Object(ioResponse);
    
      tmp := '';
      tmpAdd := DWORD(QAMF3Helpher.Stream.Memory);
      for I := 0 to QAMF3Helpher.Stream.Size do
      begin
        tmp := tmp + inttohex(pbyte(tmpAdd + I)^, 2);
      end;
      Memo1.Lines.Text := tmp; //0A131954455354526573706F6E73650D6865616465720A332554455354526573706F6E736548656164657215537461747573436F6465155374617475735465787425496E7465726E616C537461747573436F646504000619E6B58BE8AF95E78AB6E6808104817F00
    end;
    
    procedure TForm1.Button6Click(Sender: TObject);
    var
      S: AnsiString;
    begin
      //
      S := #$0a#$00#$00 +
        #$00#$01#$11#$0a#$0b#$0d#$6d#$79#$54#$79#$70#$65#$11#$61#$72#$72 +
        #$61#$79#$56#$61#$6c#$09#$07#$01#$04#$01#$04#$02#$06#$07#$65#$72 +
        #$74#$13#$73#$74#$72#$69#$6e#$67#$56#$61#$6c#$06#$07#$62#$6c#$61 +
        #$0d#$69#$6e#$74#$56#$61#$6c#$04#$02#$01;
      QAMF3Helpher.SetData(PAnsiChar(S),Length(S));
      QAMF3Helpher.ReadAMF0Type;
      QAMF3Helpher.ReadAMF0Array;
      //
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      QAMF3Helpher.Free;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      QAMF3Helpher := TQAMF3Helpher.Create;
    end;
    

      

  • 相关阅读:
    Redis 扛 Mysq 并发方案小记
    CURL 访问 HTTPS 的坑 [后记]
    PHP CURL HTTPS Error: "SSL certificate problem: unable to get local issuer certificate"
    PHP 使用 cURL HTTPS 协议证书认证问题
    HTTPS 学习笔记 (1)
    Windows CMD 仿 Mac Terminal open 命令 打开指定目录资源管理器
    Win10 Hyper-V 配置
    Windows10 下精简和配置 MySQL 5.6
    Win10 + Nginx 1.10 + PHP 7 + Redis 配置方法
    sublime text 配置 builder [build system]
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13935253.html
Copyright © 2011-2022 走看看