fundamentals5 protobuf使用

fundamentals5 protobuf使用

1)编辑.proto结构文件

2)编译生成ProtoBufCodeGen.exe。

.\ProtoBufCodeGen tables.proto

3)根据.proto结构文件自动生成pascal源码文件pbTablesMessages.pas。

3)编写测试代码

procedure TForm1.Button1Click(Sender: TObject);
begin
  var t: TTablesRecord;
  SetLength(t.GoodsArr, 1);
  SetLength(t.UnitsArr, 9999);

  var sp: TGoodsRecord;
  sp.Goodsid_HasValue := True;
  sp.Goodsid := '1';
  sp.Goodsname_HasValue := true;
  sp.Goodsname := '商品';
  t.GoodsArr[0] := sp;

  var dw: TUnitsRecord;
  for var i: Integer := 0 to 9998 do
  begin
    dw.Unitid_HasValue:=true;
    dw.Unitid := i.ToString;
    dw.Unitname_HasValue:=true;
    dw.Unitname := i.ToString;
    t.UnitsArr[i] := dw;
  end;


  var b: tbytes;
  var l: Integer := SizeOf(sp) + SizeOf(dw)*9999;
  SetLength(b, l);
  l := pbEncodeValueTablesRecord(b[0], l, t);

  var t2: TTablesRecord;
  l := pbDecodeValueTablesRecord(b[0], l, t2);
  for var dw2: TUnitsRecord in t2.UnitsArr  do
  begin
    Memo1.Lines.Add(dw2.Unitid);
    Memo1.Lines.Add(dw2.Unitname);
  end;
end;

  

 

posted @ 2021-08-20 09:04  delphi中间件  阅读(191)  评论(0)    收藏  举报