pack/unpack

runbase Framwork用pack和unpack来保存用户上次操作的值,用户上次操作的值会存在SysLastValue表中,这个功能确实蛮酷,不过今天差点被这个东西给整死,在我机子运行上的好好的代码,弄到客户那边去死活run不起来,Application和DataBase都是一样的,认真地跟踪了一遍代码才知道,原来是由于我开发的机子是两层的,客户的环境是三层造成的,太大意了......
两层代码都运行在一个进程中,没有进程间通讯的问题,pack/unpack执行情况:
从数据库里取出上次的数据->调用unpack,并用取得的值初始化Dialog,用户看到上次操作时的值->pack,并把用户的数据写回数据库.
三层:
从数据库里取出上次的数据->调用unpack取出数据->调用pack,发送到client->调用unpack,并用取得的值初始化Dialog,用户看到上次操作时的值->取得用户本次操作所选择的值,调用pack将数据打包->发送到服务器端->调用unpack,进行数据操作->pack,将本次用户的选择存到数据库里.
下面是代码:

class PackUnPackTest extends RunBase
{
NoYes ifDisplay;
NoYes ifDisplayNoSave;
DialogField dialogIfDisplay;
DialogField dialogIfDisplayNoSave;

#Define.CurrentVersion(1)
#LocalMacro.CurrentList
ifDisplay
#EndMacro

}

其中一个DialogField ifDisplayNoSave没有在CurrentList中.

static void Main(Args arg)
{
PackUnPackTest PUtest;
;
PUtest = new PackUnPackTest();

if(PUtest.prompt())
PUtest.run();

}

上面的Main方法,如果不加server修饰符(当然实际环境中应该用Menuitem的runon属性来定义的,这里论述方便直接在Main上添加),run方法的结果是正确的.

public void run()
{
super();
if(ifDisplay)
Box::info("选中俺了!");
else
Box::info("没选中俺!");

if(ifDisplayNoSave)
Box::info("选中俺了!");
else
Box::info("没选中俺!");

}

如果都选中了,就会显示两次"选中俺了"这样的提示消息.
但是如果添加了server修饰符,无论选不选第二个checkbox,结果都是一样的,第二个提示消息输出"没选中俺".
原因就是因为第二个DialogField没有存到CurrentList中,也就不会从客户端发送到server端,这样每次判断的时候都是默认的No值,sigh.
还有个问题没搞懂,如果在三层模式下,不想保存第二个DialogField的上次输入值,是不是就玩不转了那?等有时间再看一下.
XPO文件也传上来,免得被格掉了.

分类: Axapta

转载于:https://www.cnblogs.com/yuankang/archive/2012/04/10/2440034.html

解释一下pack和unpack相关推荐

  1. PHP: chr和pack、unpack那些事

    为什么80%的码农都做不了架构师?>>>    PHP是一门很灵活的语言.正因为它太灵活了,甚至有些怪异,所以大家对它的评价褒贬不一.其实我想说的是,任何一门语言都有它自身的哲学,有 ...

  2. PHP中的pack和unpack函数

    转载请注明文章出处:https://tlanyan.me/php-pack-a... PHP有两个重要的冷门函数:pack和unpack.在网络编程,读写图像文件等场景,这两个函数几乎必不可少.鉴于文 ...

  3. socket中pack 和 unpack 的使用

    任何一款拥有socket操作能力的语言都有一个专门用于组包的函数,php也不例外! 用了很久php了却很少有机会用php进行一些二进制操作. 最近用php写一个socket客户端连接一个用C++语言开 ...

  4. python的pack和unpack用法

    python的pack和unpack用法 pack和unpack在处理二进制流中比较常用的封包.解包格式 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) pack(fm ...

  5. pack 和 unpack

    摘要 PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口.或 ...

  6. php pack、unpack、ord 函数使用方法(二进制流接口应用实例)

    park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少, ...

  7. C++的 pack 与 unpack的方法

    在使用 Cuda 的Thrust 进行加速时,需要将一些复杂信息从C++层传递到Cuda层,比如说 多个Device端的内存地址. 一种常用的方式是,使用device_vector 与 STL vec ...

  8. python pack和unpack的用法

    #  按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) pack(fmt, v1, v2, ...) # 按照给定的格式(fmt)解析字节流string,返回解析出来的t ...

  9. Php pack unpack

    2019独角兽企业重金招聘Python工程师标准>>> PHP的pack和unpack主要用于把数据进行二进制化和反二进制化,一般用于网络传输或者存储数据时用,能一定程度降低数据长度 ...

最新文章

  1. 2001年的FLTK设置教程
  2. Uncaught ReferenceError: layer is not defined
  3. 坑 之 You must feed a value for placeholder tensor ‘label_input‘ with dtype float and shape
  4. Ext.js4.x 的面板中嵌入UEditor编辑器
  5. LeetCode 744. 寻找比目标字母大的最小字母(二分查找)
  6. java compare equla_Java中的equals,==,compareTo和compare的比较
  7. SSL 自签证书工具源码
  8. 【MySQL】MySQL 8 Show innodb status 命令改变
  9. turtle fillcolor_Python编程:使用海龟turtle画图制作可爱的哆啦A梦,你也可以的。
  10. Unity-Live2D笔记(脚本初始化,模型加载,live2d模型导出)
  11. Java语言课程设计——简易计算器(详细含报告和源代码)
  12. matlab 平滑曲线连接_【小微技能】:数学建模比赛中MATLAB的实用技巧
  13. 广和通率先启动基于联发科技 T830 5G平台的5G模组开发,加速全球运营商5G FWA部署
  14. 结构光3D成像原理及应用
  15. mysql 分区表如何恢复_如何恢复mysql 单个innodb 分区表
  16. MaskNet 这个CTR模型,有点意思
  17. 【机器学习】某工19级智科专业机器学习期末复习资料
  18. java生僻字解决方案
  19. Vue脚手架运行报错-4058
  20. 海康摄像头opencv实时回调

热门文章

  1. 为什么上一家公司离职?
  2. CPU为什么不做成圆的而是方的?
  3. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别
  4. 4.2第一个窗口程序
  5. 用信号量实现进程互斥、同步、前驱关系
  6. uni-app中text文本组件的基本使用
  7. 小心编译器的隐式声明
  8. azure 入门_Azure SQL数据库入门
  9. sql limit 子句_具有并行性SQL Server TOP子句性能问题
  10. Java 基础系列之volatile变量(一)