DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法
最近因为工作需要,需要在不同的开发环境中应用Protobuf,特此,我专门研究了一下。为了防止自己忘记这些事情,现在记录在这里!需要的朋友可以借鉴一些,因为这些东西在GOOGLE和百度上搜索起来真的很费劲!
一、首先说DELPHI的。
因为DELPHI现在用的人不多了,所以找这个东西真心不好找!还好,加了几个QQ群,有用过的朋友告诉了我!
具体步骤如下:
1、下载DELPHI使用Protobuf需要的项目。
地址在这里:http://sourceforge.NET/projects/fundementals/files/Fundamentals4/
2、编译ProtoCodeGen.exe
下载完上面的文件后,在子目录中找到 ProtocolBuffers\CodeGenApp\ProtoCodeGen.dpr ----- 编译它
我用的是DELPHI 2007 打开项目会提示打不开什么的,没关系,删掉ProtoCodeGen.dproj,然后在打开它。实在不行,用记事本打开,复制代码出来再建立个新项目……
3、编译完毕后,得到ProtoCodeGen.exe一个。它就可以把 *.proto 文件,生成为PAS文件了。
4、在D盘下,我新建了一个Google文件夹,把刚刚生成的protocodegen.exe放了进去
在这个文件夹下,我用记事本新建了一个文件,里面的内容如下
message Person {
required string name = 1;
required int32 id = 2;
}
保存为 message.proto
同样,我在Google文件夹下用建立一个叫做 pas_out文件夹
具体编译的指令时这样的。
打开 CMD。(DOS命令行那个,在开始——》运行——》CMD——》回车)
敲入命令
这个时候,去D:\google\pas_out下去找,会发现生成了一个pbMessageMessages.pas文件。
大功告成!!!!!
5、如何使用
新建一个项目
把Fundamentals.ProtoBuf.4.0.01(加压文件夹中的) ProtocolBuffers和Utils目录下的文件拷贝到我们新建的项目下,添加到项目里。
恩,其实并不是都能用的上的。这个自己看生成的pbMessageMessages.pas其他它就需要3个引用
cUtils,
cStrings,
cProtoBufUtils;
加密或者解密(序列化或者反序列化的代码如下)
var p1,p2:TPersonRecord;
len:Integer;
Bt:TBytes;
begin
p1.Name := edtName.Text;
p1.Id := StrToInt(edtID.Text);
SetLength(Bt,100);
//加密
//len := pbEncodeValuePersonRecord(Bt[0],100,p1);
len := pbEncodeValuePersonRecord(Bt[0],100,p1);
SetLength(Bt,len);
mmo1.Lines.Add(IntToStr(len));
//解密
//PersonRecordInit(p2);
len :=pbDecodeValuePersonRecord(Bt[0],len,p2);
mmo1.Lines.Add(IntToStr(len));
mmo1.Lines.Add(p2.Name);
end;
彻底大功告成!!!!!
==================================================================================================
二、再说FLASH的
1、还是下载插件。
话说,这FLASH的版本和开发工具很多,本座用的是FLash Builder 4.7
话说这FLASH使用GOOGLE 的protobuf的插件也有2个。
protobuf-actionscript3 (据说是官方,但也不想是官方)
protoc-gen-as3(国人写的——需要力挺)
网上评论说,国人写的好,更新的也及时,BUG也少,支持的也广,而所谓的官方的,貌似也能凑合着用 —— 相当凑合!
本座特地去2个开源地址去看了一下。
http://code.google.com/p/protobuf-actionscript3/downloads/list(所谓官方的)
最后一个更新日期是 Oct 2009
在看看我们国人的
https://code.google.com/p/protoc-gen-as3/downloads/list
最后一次更新日期是 Mar 2013
还能说什么呢?果断用国人的!!!!
2、下载之后怎么做呢?
这部分我就不自己写出来了,引用前人的文章吧
http://blog.csdn.net/luna84/article/details/8696217 --- 环境配置和编译指令
http://blog.csdn.Net/luna84/article/details/8695418
需要注意的是:你需要有Java的SDK作为环境,不然在敲CMD命令的时候 会提示
‘java‘不是内部或外部命令,也不是可运行的程序或批处理文件
去http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html下载JDK安装吧,100多M而已。

以下内容来自http://www.cnblogs.com/vincent-lee/archive/2012/01/23/2328866.html
window下使用actionscript的protoc-gen-as3步骤
1)下载protoc-gen-as3-1.0.0-rc6-bin.tar.gz 并解压到d:\google\as_plugin目录
2)下载protoc-2.4.1-win32.zip并解压到d:\google\
3)创建d:\google\as_out\目录
4)创建d:\google\message.proto
message Person { required string name = 1; required int32 id = 2;}5)开打cmd运行命令
protoc.exe --plugin=protoc-gen-as3="protoc-gen-as3.bat" --as3_out=d:\google\as_out message.proto |
目录d:\google\as_out\下自动生成initializer.as.inc,Person.as文件
6)打开flash builder创建应用,引入d:\google\as_plugin\protobuf.swc文件
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import Protocol.Person;
protected function test_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
var p:Person=new Person();
p.id=1;
p.name="tommy";
var b:ByteArray=new ByteArray();
p.writeTo(b);
b.position =0;
var pp:Person=new Person();
pp.mergeFrom(b);
Alert.show("pp.id="+pp.id+"\r\n"+"pp.name="+pp.name,"person");
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:Button x="100" y="100" id="test" label="test" click="test_clickHandler(event)" />
</s:Application>
DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法的更多相关文章
- C#语言下使用gRPC、protobuf(Google Protocol Buffers)实现文件传输
初识gRPC还是一位做JAVA的同事在项目中用到了它,为了C#的客户端程序和java的服务器程序进行通信和数据交换,当时还是对方编译成C#,我直接调用. 后来,自己下来做了C#版本gRPC编写,搜了很 ...
- C# 使用Google Protocol Buffers
Google Protocol Buffers 使用3.0版本 下载protoc.exe 下载链接 https://github.com/protocolbuffers/protobuf/releas ...
- Google Protocol Buffers 入门
Google Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的 ...
- Google Protocol Buffers介绍
简要介绍和总结protobuf的一些关键点,从我之前做的ppt里摘录而成,希望能节省protobuf初学者的入门时间.这是一个简单的Demo. Protobuf 简介 Protobuf全称Google ...
- Google Protocol Buffers 快速入门(带生成C#源码的方法)
Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门: ...
- Google Protocol Buffers简介
什么是 protocol buffers ? Protocol buffers 是一种灵活.高效的序列化结构数据的自动机制--想想XML,但是它更小,更快,更简单.你只需要把你需要怎样结构化你的数据定 ...
- Google Protocol Buffers 反序列化 转
http://www.cnblogs.com/royenhome/archive/2010/10/30/1865256.html 本文作为结束篇,会稍微介绍下怎么反序列化GoogleBuffer数 ...
- Google Protocol Buffers和java字符串处理控制
大多数的操作码被从夜晚复制.懒得敲. 直接在源代码和测试结果如下. serabuffer.proto档.使用下面的命令来生成java代码. protoc -I=./ --java_out=./ ser ...
- 阅读Google Protocol Buffers 指南,整理pb语法
官方网站: https://developers.google.com/protocol-buffers/docs/proto3 1.简单定义一个Message 类型 pb语法文件以"*.p ...
随机推荐
- 重装macOS环境配置笔记
由于早些年买mac的时候写代码的经验还不够,导致多年使用后mac上装满了乱七八糟的软件,比如python就有系统自带的,xcode里的,pyenv的,以及brew安装的各种版本,nginx,Apach ...
- (转)淘淘商城系列——SSM框架整合之表现层整合
http://blog.csdn.net/yerenyuan_pku/article/details/72721120 上文我们一起学习了Service层的整合,本文将教大家如何整合表现层. 我们在t ...
- Jmeter之https请求
Jmeter之录制https脚本,网上介绍了好多种方法,大家自行百度. 如果手写https脚本,该如何做呢? 方法:http信息头管理器,加入User-Agent参数 案例:手写百度的搜索:哈哈 请 ...
- JavaScript 原生代码找对象的方法
1. id : document.getElementById('id') 2. 标签 : document.getElementsByTagName('标签') //获得的是一个标签数组 3. N ...
- lua 之 三木运算符
在c语言中我三目运算符这么写: a?b:c 例如: max = a>b?a:b; 在lua中我们这么写 max = a>b and a or b 运行如下:
- CAD交互绘制多段线(com接口)
多段线又被称为多义线,表示一起画的都是连在一起的一个复合对象,可以是直线也可以是圆弧并且它们还可以加不同的宽度. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下 ...
- java_lock锁
lock锁是一个接口,jdk5.0新增的接口: 在线程中创建一个他的实现类对象Reentrantlock,默认为fals可以改为true,改为true后是有序的 把操作共享资源的代码放入try中,在t ...
- 第3节 mapreduce高级:10、11、分组求取topN
只要修改OrderReducer.java的reduce方法,修改为: int i = 0;for(NullWritable nullWritable:values){ if(i>=2) bre ...
- java中mkdir()和mkdirs()区别
mkdirs()可以建立多级文件夹 mkdir()只会建立一级的文件夹 例如: new File("/file/one/two").mkdirs(); 可建立/file/one/t ...
- Elasticsearch分布式机制和document分析
1. Elasticsearch对复杂分布式机制的透明隐藏特性 1.1)分片机制 1.2)集群发现机制 1.3)shard负载均衡 1.4)shard副本,请求路由,集群扩容,shard重分配 2. ...