DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffer
最近因为工作需要,需要在不同的开发环境中应用Protobuf,特此,我专门研究了一下。为了防止自己忘记这些事情,现在记录在这里!需要的朋友可以借鉴一些,因为这些东西在GOOGLE和百度上搜索起来真的很费劲! 一、首先说DELPHI的。 因为DELPHI现在用的人不多了,所以找这个东西真心不好找!还好,加了几个QQ群,有用过的朋友告诉了我! 具体步骤如下: 1、下载DELPHI使用Protobuf需要的项目。 地址在这里:http://sourc 2、编译ProtoCodeGen.exe 我用的是DELPHI 2007 打开项目会提示打不开什么的,没关系,删掉ProtoCodeGen.dproj,然后在打开它。实在不行,用记事本打开,复制代码出来再建立个新项目…… 3、编译完毕后,得到ProtoCodeGen.exe一个。它就可以把 ? *.proto ?文件,生成为PAS文件了。 4、在D盘下,我新建了一个Google文件夹,把刚刚生成的protocodegen.exe放了进去 在这个文件夹下,我用记事本新建了一个文件,里面的内容如下 message Person { 保存为 ??message.proto ?? 同样,我在Google文件夹下用建立一个叫做 pas_out文件夹 具体编译的指令时这样的。 打开 CMD。(DOS命令行那个,在开始——》运行——》CMD——》回车) 敲入命令 这个时候,去D:googlepas_out下去找,会发现生成了一个pbMessageMessages.pas文件。 大功告成!!!!! 5、如何使用 新建一个项目 把Fundamentals.ProtoBuf.4.0.01(加压文件夹中的)?ProtocolBuffers和Utils目录下的文件拷贝到我们新建的项目下,添加到项目里。 恩,其实并不是都能用的上的。这个自己看生成的pbMessageMessages.pas其他它就需要3个引用 ? cUtils, 加密或者解密(序列化或者反序列化的代码如下) var p1,p2:TPersonRecord; 彻底大功告成!!!!! ================================================================================================== 二、再说FLASH的 1、还是下载插件。 话说,这FLASH的版本和开发工具很多,本座用的是FLash Builder 4.7 话说这FLASH使用GOOGLE 的protobuf的插件也有2个。 protobuf-actionscript3 (据说是官方,但也不想是官方) protoc-gen-as3(国人写的——需要力挺) 网上评论说,国人写的好,更新的也及时,BUG也少,支持的也广,而所谓的官方的,貌似也能凑合着用 —— 相当凑合! 本座特地去2个开源地址去看了一下。 最后一个更新日期是 ??Oct 2009 在看看我们国人的 还能说什么呢?果断用国人的!!!! 2、下载之后怎么做呢? 这部分我就不自己写出来了,引用前人的文章吧 http://blog.csdn.net/luna84/article/details/8695418 需要注意的是:你需要有JAVA的SDK作为环境,不然在敲CMD命令的时候 会提示
‘java‘不是内部或外部命令,也不是可运行的程序或批处理文件
|
protoc.exe --plugin=protoc-gen-as3="protoc-gen-as3.bat" --as3_out=d:googleas_out message.proto
|
目录d:googleas_out下自动生成initializer.as.inc,Person.as文件
6)打开flash builder创建应用,引入d:googleas_pluginprotobuf.swc文件
<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+"rn"+"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>
==============================彻底完毕================================================
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!