解释一下pack和unpack
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相关推荐
- PHP: chr和pack、unpack那些事
为什么80%的码农都做不了架构师?>>> PHP是一门很灵活的语言.正因为它太灵活了,甚至有些怪异,所以大家对它的评价褒贬不一.其实我想说的是,任何一门语言都有它自身的哲学,有 ...
- PHP中的pack和unpack函数
转载请注明文章出处:https://tlanyan.me/php-pack-a... PHP有两个重要的冷门函数:pack和unpack.在网络编程,读写图像文件等场景,这两个函数几乎必不可少.鉴于文 ...
- socket中pack 和 unpack 的使用
任何一款拥有socket操作能力的语言都有一个专门用于组包的函数,php也不例外! 用了很久php了却很少有机会用php进行一些二进制操作. 最近用php写一个socket客户端连接一个用C++语言开 ...
- python的pack和unpack用法
python的pack和unpack用法 pack和unpack在处理二进制流中比较常用的封包.解包格式 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) pack(fm ...
- pack 和 unpack
摘要 PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口.或 ...
- php pack、unpack、ord 函数使用方法(二进制流接口应用实例)
park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少, ...
- C++的 pack 与 unpack的方法
在使用 Cuda 的Thrust 进行加速时,需要将一些复杂信息从C++层传递到Cuda层,比如说 多个Device端的内存地址. 一种常用的方式是,使用device_vector 与 STL vec ...
- python pack和unpack的用法
# 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) pack(fmt, v1, v2, ...) # 按照给定的格式(fmt)解析字节流string,返回解析出来的t ...
- Php pack unpack
2019独角兽企业重金招聘Python工程师标准>>> PHP的pack和unpack主要用于把数据进行二进制化和反二进制化,一般用于网络传输或者存储数据时用,能一定程度降低数据长度 ...
最新文章
- 2001年的FLTK设置教程
- Uncaught ReferenceError: layer is not defined
- 坑 之 You must feed a value for placeholder tensor ‘label_input‘ with dtype float and shape
- Ext.js4.x 的面板中嵌入UEditor编辑器
- LeetCode 744. 寻找比目标字母大的最小字母(二分查找)
- java compare equla_Java中的equals,==,compareTo和compare的比较
- SSL 自签证书工具源码
- 【MySQL】MySQL 8 Show innodb status 命令改变
- turtle fillcolor_Python编程:使用海龟turtle画图制作可爱的哆啦A梦,你也可以的。
- Unity-Live2D笔记(脚本初始化,模型加载,live2d模型导出)
- Java语言课程设计——简易计算器(详细含报告和源代码)
- matlab 平滑曲线连接_【小微技能】:数学建模比赛中MATLAB的实用技巧
- 广和通率先启动基于联发科技 T830 5G平台的5G模组开发,加速全球运营商5G FWA部署
- 结构光3D成像原理及应用
- mysql 分区表如何恢复_如何恢复mysql 单个innodb 分区表
- MaskNet 这个CTR模型,有点意思
- 【机器学习】某工19级智科专业机器学习期末复习资料
- java生僻字解决方案
- Vue脚手架运行报错-4058
- 海康摄像头opencv实时回调